Я хочу создать массив в numpy, который содержит значения математической серии, в этом примере квадрат предыдущего значения, дающий одно начальное значение, то есть a_0 = 2, a_1 = 4, a_3 = 16, .. .Как использовать numpy для вычисления серии эффективно?
Попытка использовать векторизации в NumPy я думал, что это может работать:
import numpy as np
a = np.array([2,0,0,0,0])
a[1:] = a[0:-1]**2
но результат
array([2, 4, 0, 0, 0])
я узнал теперь, что NumPy делает внутренне создать временный массив для вывода и в конце копий этот массив, поэтому он терпит неудачу для значений, которые равны нулю в исходном массиве. Есть ли способ для векторизации этой функции с помощью numpy, numexpr или других инструментов? Какие еще существуют способы эффективного вычисления значений серии, когда доступны быстрые функции numpy без перехода в цикл for?
также связано: http://stackoverflow.com/questions/4407984/is-a-for-loop-necessary-if-elements- of-the-a-numpy-vector-are-depend-on-t – sdaau