在Python中乘以数组
在这个问题中,我看到如何用同一个数字去乘一个整个的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
都是比例子中更长的数组。
1 个回答
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()
这一步和在一行里直接计算是没有什么不同的。