从this问题我看到如何将整个numpy数组乘以相同的数字(第二个答案,JoshAdel)。但是当我将P改变为(长)数组的最大值时,最好是事先存储最大值,还是在第二个例子中只计算一次H的最大值?
import numpy as np
H = [12,12,5,32,6,0.5]
P=H.max()
S=[22, 33, 45.6, 21.6, 51.8]
SP = P*np.array(S)
或
import numpy as np
H = [12,12,5,32,6,0.5]
S=[22, 33, 45.6, 21.6, 51.8]
SP = H.max()*np.array(S)
那么它是否需要计算H.max()
每个项目必须加倍,或者它是否足够智能一次?在我的代码中S
和H
是更长的数组,然后在示例中。
答案 0 :(得分:3)
两种方法之间几乎没有区别:
In [74]:
import numpy as np
H = np.random.random(100000)
%timeit P=H.max()
S=np.random.random(100000)
%timeit SP = P*np.array(S)
%timeit SP = H.max()*np.array(S)
10000 loops, best of 3: 51.2 µs per loop
10000 loops, best of 3: 165 µs per loop
1000 loops, best of 3: 217 µs per loop
在这里你可以看到预先计算H.max()
的单个步骤与在一行中计算它没有区别