jmb*_*uis 27 python arrays numpy
我需要对2D numpy数组(elementwise)进行平方,我尝试了以下代码:
import numpy as np
a = np.arange(4).reshape(2, 2)
print a^2, '\n'
print a*a
Run Code Online (Sandbox Code Playgroud)
产量:
[[2 3]
[0 1]]
[[0 1]
[4 9]]
Run Code Online (Sandbox Code Playgroud)
显然,符号a*a给了我想要的结果,而不是a^2.
我想知道是否存在另一种表示法将numpy数组提升到2或N的幂?而不是a*a*a*..*a.
Sau*_*tro 38
最快的方法是做a*a或a**2或np.square(a)而np.power(a, 2)显示是相当慢.
np.power()允许您为每个元素使用不同的指数,而不是2传递另一个指数数组.从@GarethRees的评论我刚刚了解到这个函数会给你不同的结果,a**2或者a*a在你有小容差的情况下变得很重要.
我使用NumPy 1.9.0 MKL 64位计时了一些例子,结果如下所示:
In [29]: a = np.random.random((1000, 1000))
In [30]: timeit a*a
100 loops, best of 3: 2.78 ms per loop
In [31]: timeit a**2
100 loops, best of 3: 2.77 ms per loop
In [32]: timeit np.power(a, 2)
10 loops, best of 3: 71.3 ms per loop
Run Code Online (Sandbox Code Playgroud)