<pre><code>>>> import numpy as np
>>> d3 = [9,9,9,8]
>>> d4 = [3,6,np.nan,10]
>>> total = np.nansum([(a-b)**2 for a,b in zip(d3, d4)])
49.0
</code></pre>
<h2>编辑</h2>
<p>下面是一些测试,用列表显示这需要多长时间,np.数组,并将列表转换为np.数组正在运行:</p>
<pre><code>>>> import numpy as np
>>> short_l1 = [9,9,9,8]
>>> short_l2 = [3,6,np.nan,10]
>>> long_l1 = short_l1 * 1000
>>> long_l2 = short_l2 * 1000
>>> short_a1 = np.array(short_l1)
>>> short_a2 = np.array(short_l2)
>>> long_a1 = np.array(long_l1)
>>> long_a2 = np.array(long_l2)
>>> %timeit np.nansum([(a-b)**2 for a,b in zip(short_l1 , short_l2)])
9.1 µs ± 29.4 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
>>> %timeit np.nansum((np.array(short_l1)-np.array(short_l2))**2)
12 µs ± 112 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
>>> %timeit np.nansum((short_a1-short_a2)**2)
9.07 µs ± 24.5 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
>>> %timeit np.nansum([(a-b)**2 for a,b in zip(long_l1 , long_l2)])
1.32 ms ± 15.8 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
>>> %timeit np.nansum((np.array(long_l1)-np.array(long_l2))**2)
498 µs ± 3.07 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
>>> %timeit np.nansum((long_a1-long_a2)**2)
48.7 µs ± 581 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
</code></pre>
<p>正如您所看到的,您肯定应该按照@DSM的回答来做,当您的数据量增加时,</strong>会更快</p>