Ale*_*der 4 python optimization numpy
我想在numpy中创建一个包含数学系列值的数组,在本例中是前一个值的平方,给出一个起始值,即a_0 = 2,a_1 = 4,a_3 = 16,...
试图在numpy中使用矢量化我认为这可能有效:
import numpy as np
a = np.array([2,0,0,0,0])
a[1:] = a[0:-1]**2
Run Code Online (Sandbox Code Playgroud)
但结果是
array([2, 4, 0, 0, 0])
Run Code Online (Sandbox Code Playgroud)
我现在已经知道numpy会在内部为输出创建一个临时数组,并最终复制这个数组,这就是原始数组中零值失败的原因.有没有办法使用numpy,numexpr或其他工具来矢量化这个函数?当快速numpy函数可用而不需要for循环时,有哪些其他方法可以有效地计算一系列的值?
在NumPy中没有通用的方法来矢量化递归序列定义.这种特殊情况很容易在没有for循环的情况下编写:
>>> 2 ** 2 ** numpy.arange(5)
array([ 2, 4, 16, 256, 65536])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
651 次 |
| 最近记录: |