擅长:python、mysql、java
<p>这是韦斯·麦金尼的来信:</p>
<blockquote>
<p>Arrays are important because they enable you to express batch
operations on data without writing any for loops. This is usually
called vectorization. Any arithmetic operations between equal-size
arrays applies the operation elementwise.</p>
</blockquote>
<p>矢量化版本:</p>
<pre><code>>>> import numpy as np
>>> arr = np.array([[1., 2., 3.], [4., 5., 6.]])
>>> arr * arr
array([[ 1., 4., 9.],
[ 16., 25., 36.]])
</code></pre>
<p>本地Python(嵌套)列表中的循环也是这样:</p>
<pre><code>>>> arr = arr.tolist()
>>> res = [[0., 0., 0.], [0., 0., 0.]]
>>> for idx1, row in enumerate(arr):
for idx2, val2 in enumerate(row):
res[idx1][idx2] = val2 * val2
>>> res
[[1.0, 4.0, 9.0], [16.0, 25.0, 36.0]]
</code></pre>
<p>这两种操作如何比较?NumPy版本需要436ns;Python版本需要3.52微秒(3520ns)。这种“小”时间上的巨大差异被称为微性能,当您处理更大的数据或重复操作数千或数百万次时,它变得非常重要。</p>