Объем переменной - это контекст, в котором он определен. По большей части все переменные PHP имеют только одну область. В эту единую область охвата включены и требуемые файлы. Например:
<?php
$a = 1;
include 'b.inc';
?>
Здесь переменная $a
будет доступна в включенном скрипте b.inc
. Однако в пользовательских функциях вводится локальная функция. Любая переменная, используемая внутри функции, по умолчанию ограничена областью локальных функций. Например:
<?php
$a = 1; /* global scope */
function test()
{
echo $a; /* reference to local scope variable */
}
test();
?>
Этот сценарий не будет выдавать какой-либо вывод, потому что оператор echo ссылается на локальную версию переменной $ a, и ей не присваивается значение в этой области. Вы можете заметить, что это немного отличается от языка C в том, что глобальные переменные в C автоматически доступны для функций, если они не переопределены локальным определением. Это может вызвать некоторые проблемы в том, что люди могут непреднамеренно изменить глобальную переменную. В PHP глобальные переменные должны быть объявлены глобальными внутри функции, если они будут использоваться в этой функции.
Можно использовать PolynomialFeatures
Тестовый столбец:
import numpy as np
col = np.linspace(1, 5, 5).reshape((-1, 1))
Преобразование:
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree=4, include_bias=False)
poly.fit_transform(col).T
> array([[ 1., 2., 3., 4., 5.],
[ 1., 4., 9., 16., 25.],
[ 1., 8., 27., 64., 125.],
[ 1., 16., 81., 256., 625.]])
Вы можете создать матрицу, повторяющую массив K раз, а затем использовать numpy's cumprod ()
result = np.cumprod([arr,]*k,axis=0)
Если вы не используете numpy, обычный список Python может сделать то же самое, используя метод накопления из itertools.
result = accumulate( ([arr]*k), func=lambda a,b: [x*y for x,y in zip(a,b)])
Это будет намного медленнее, чем при использовании numpy.
примечание: накопление возвращает итератор, вы можете превратить его обратно в список с помощью list(result)
Это очень известная матрица, она называется матрица Вандермонда . В пакете Numpy есть специальная функция для получения этой матрицы:
import numpy as np
np.fliplr(np.vander([2,3,4], 5)).T
> array([[ 1, 1, 1],
[ 2, 3, 4],
[ 4, 9, 16],
[ 8, 27, 64],
[ 16, 81, 256]])
Разновидность power.outer
с использованием оператора ** и трансляции:
In [223]: np.arange(1,5)**np.arange(1,4)[:,None]
Out[223]:
array([[ 1, 2, 3, 4],
[ 1, 4, 9, 16],
[ 1, 8, 27, 64]])