Jos*_* Ho 0 python numpy list enumerate
我有一个单个数字列表,我想要总结.
我从这开始:
d3 = [9,9,9,8]
d4 = [3,6,np.nan,10]
for i,j in enumerate(d3):
add = [(d3[i]-d4[i])**2]
Run Code Online (Sandbox Code Playgroud)
当我执行上面的代码时,我得到以下列表:
[36]
[9]
[nan]
[4]
Run Code Online (Sandbox Code Playgroud)
但是,我想要这些数字的SUM,而忽略NaN(所需的输出是36 + 9 + 4):
对于numpy中的快速代码,您希望尽可能避免循环.转换为numpy数组(坦率地说,最好从它们开始,否则每次转换都会丢失!),应用向量运算,然后使用np.nansum:
In [9]: np.array(d3) - np.array(d4)
Out[9]: array([ 6., 3., nan, -2.])
In [10]: (np.array(d3) - np.array(d4))**2
Out[10]: array([ 36., 9., nan, 4.])
In [11]: np.nansum((np.array(d3) - np.array(d4))**2)
Out[11]: 49.0
Run Code Online (Sandbox Code Playgroud)
为了比较,如果我们从 numpy数组开始,那么阅读起来要好得多:
In [14]: d3 = np.array(d3); d4 = np.array(d4)
In [15]: np.nansum((d3-d4)**2)
Out[15]: 49.0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |