我有一个多维数组,初始化为C=np.zeros([20,20,20,20])
。然后,我正在尝试通过一些公式(C(x)=(exp(-|x|^2)
在这种情况下)给C赋值。以下代码是有效的,但非常缓慢。
it=np.nditer(C, flags=['multi_index'], op_flags=['readwrite'])
while not it.finished:
diff=np.linalg.norm(np.array(it.multi_index))
it[0]=np.exp(-diff**2)
it.iternext()
这个问题是否可以更快地使用更符合Python风格的方式解决?
nditer
教程页面。在最后,它有一个在Cython代码中使用nditer
的示例。那是很快的。但在Python代码中,它并不比其他迭代方法更快。最好完全避免迭代。 - hpaulj