【发布时间】:2014-04-10 08:47:56
【问题描述】:
从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 是比示例中更长的数组。
【问题讨论】:
-
您可以组成一个由 10^6 个向量组成的示例并检查。或者循环运行。甚至还有一个
timeit模块。 -
第一个代码 sn-p 是 4.47us 而不是 11.9us 但我会使用您的真实数据对其进行分析
-
实际上,时间似乎没有区别,对于 100,000 个元素的随机数组,仅计算
P=H.max()需要 51.2us,然后SP = P*np.array(S)需要 165us,然后SP = H.max()*np.array(S)需要 217us所以差别不大 -
@EdChum 好的。我自己一直在尝试使用 timeit,但我以前从未做过,所以我无法像你那样快速测试它。感谢您的信息!