Nic*_*aiF 5 python arrays numpy nan
我有两个包含NaN的numpy数组:
A = np.array([np.nan, 2, np.nan, 3, 4])
B = np.array([ 1 , 2, 3 , 4, np.nan])
Run Code Online (Sandbox Code Playgroud)
是否有任何聪明的方法使用numpy删除两个数组中的NaNs,并删除其他列表中相应索引的什么?看起来像这样:
A = array([ 2, 3, ])
B = array([ 2, 4, ])
Run Code Online (Sandbox Code Playgroud)
你可以做的是将2个数组加在一起,这将用NaN值覆盖,它们都是无,然后使用它生成一个布尔掩码索引,然后使用索引索引到原始的numpy数组:
In [193]:
A = np.array([np.nan, 2, np.nan, 3, 4])
B = np.array([ 1 , 2, 3 , 4, np.nan])
idx = np.where(~np.isnan(A+B))
idx
print(A[idx])
print(B[idx])
[ 2. 3.]
[ 2. 4.]
Run Code Online (Sandbox Code Playgroud)
输出来自A+B:
In [194]:
A+B
Out[194]:
array([ nan, 4., nan, 7., nan])
Run Code Online (Sandbox Code Playgroud)
编辑
正如@Oliver W.正确指出的那样,这np.where是不必要的,因为它np.isnan会产生一个可以用来索引数组的布尔索引:
In [199]:
A = np.array([np.nan, 2, np.nan, 3, 4])
B = np.array([ 1 , 2, 3 , 4, np.nan])
idx = (~np.isnan(A+B))
print(A[idx])
print(B[idx])
[ 2. 3.]
[ 2. 4.]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2046 次 |
| 最近记录: |