删除numpy数组中的NaN

尼古拉·F

我有两个包含NaN的numpy数组:

A = np.array([np.nan,   2,   np.nan,   3,   4])
B = np.array([   1  ,   2,     3   ,   4,  np.nan])

有什么聪明的方法使用numpy删除两个数组中的NaN,并且还删除另一个列表中相应索引上的内容?使它看起来像这样:

A = array([  2,   3, ])
B = array([  2,   4, ])
埃德·楚姆

您可以做的是将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.]

来自的输出A+B

In [194]:

A+B
Out[194]:
array([ nan,   4.,  nan,   7.,  nan])

编辑

正如@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.]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法从 numpy 数组中删除 NaN

来自分类Dev

从NumPy数组中删除仅具有“ nan”值的列

来自分类Dev

从另一个numpy数组中删除数组中的nan

来自分类Dev

从阵列数组中删除Nan

来自分类Dev

Pandas / Numpy:删除pandas系列或numpy数组中的前导/尾随nan

来自分类Dev

在没有for循环的情况下从二维Numpy数组中删除nan条目

来自分类Dev

删除Numpy数组中第一个数字之前的Nan出现

来自分类Dev

从numpy数组中删除条目

来自分类Dev

从NumPy数组中删除值对

来自分类Dev

从numpy数组中删除括号

来自分类Dev

检查numpy数组中的nan值

来自分类Dev

如何从numpy数组数组中删除无行?

来自分类Dev

在python中删除numpy数组中的行

来自分类Dev

从图像numpy数组中删除False / True的numpy数组

来自分类Dev

numpy从np数组中删除维度

来自分类Dev

从图像numpy数组中删除透明像素

来自分类Dev

如何删除numpy数组中的列?

来自分类Dev

从numPy数组列表中删除重复项

来自分类Dev

删除numpy数组中的列范围

来自分类Dev

如何删除numpy数组中的非对称对?

来自分类Dev

从numpy数组中删除零值

来自分类Dev

从numpy数组中删除元素的最佳算法

来自分类Dev

删除numpy数组中的行和列

来自分类Dev

如何从numpy数组中删除重叠的块?

来自分类Dev

从图像numpy数组中删除透明像素

来自分类Dev

随机删除 numpy 数组中 30% 的值

来自分类Dev

从 numpy 数组中删除小于 1 的元素

来自分类Dev

在numpy数组中删除pandas列的问题

来自分类Dev

从numpy数组中删除数字偶数