擅长:python、mysql、java
<p>可以使用以下方法消除for循环:</p>
<pre><code>In [48]: ((a - a.swapaxes(1,2))**2).sum(axis=0)
Out[48]:
array([[ 0, 118, 120],
[118, 0, 152],
[120, 152, 0]])
</code></pre>
<p>注意,如果<code>a</code>具有形状<code>(N, 1, M)</code>,那么{<cd3>}具有形状{<cd4>}。确保有足够的内存来容纳这种大小的数组。页面交换也会降低计算速度。在</p>
<p>如果内存太少,则必须将计算分成块:</p>
^{2}$
<p>这是对整个数组执行计算和
逐行计算。如果有一百万行,而chunksize是10**4,那么循环只会有100次迭代,而不是100万次。
因此,它应该比逐行计算要快得多。选择允许在RAM中执行计算的chunksize的最大值。在</p>