Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 移除numpy阵列中的NAN_Python_Arrays_Numpy_Nan - Fatal编程技术网

Python 移除numpy阵列中的NAN

Python 移除numpy阵列中的NAN,python,arrays,numpy,nan,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]) 是否有任何聪明的方法可以使用numpy删除两个数组中的NAN,并删除另一个列表中相应索引上的内容? 让它看起来像这样: A = array([ 2, 3, ]) B = array([ 2, 4, ]) 您可以将这两个数组添加到一起,这将用无的N

我有两个包含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, ])

您可以将这两个数组添加到一起,这将用无的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.]
A[~(np.isnan(A)| np.isnan(B))]


B[~(np.isnan(A)| np.isnan(B))]

您也在使用熊猫吗?(有一种方法可以满足您对
DataFrame
对象的需求)使用
np。不过,
是完全多余的。@OliverW。嗯,是的,你是对的,我最初认为我需要整数索引,但是是的,这里没有必要,我会更新我的答案