Python создает множественный массив из базового массива [закрыто]

Объем переменной - это контекст, в котором он определен. По большей части все переменные 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 глобальные переменные должны быть объявлены глобальными внутри функции, если они будут использоваться в этой функции.

-1
задан Gamp 24 March 2019 в 19:55
поделиться

4 ответа

Можно использовать 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.]])
0
ответ дан koPytok 24 March 2019 в 19:55
поделиться

Вы можете создать матрицу, повторяющую массив 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)

0
ответ дан Alain T. 24 March 2019 в 19:55
поделиться

Это очень известная матрица, она называется матрица Вандермонда . В пакете 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]])
0
ответ дан bubble 24 March 2019 в 19:55
поделиться

Разновидность 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]])
0
ответ дан hpaulj 24 March 2019 в 19:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: