从numpy 2-D数组中删除NAN

Neu*_*tar 3 python numpy nan

此问题类似,我想从2-D numpy数组中删除一些NAN.但是,我没有删除具有NAN的整行,而是想从数组的每一行中删除相应的元素.例如(为简单起见使用列表格式)

x=[ [1,2,3,4],
    [2,4,nan,8],
    [3,6,9,0] ]
Run Code Online (Sandbox Code Playgroud)

会成为

x=[ [1,2,4],
    [2,4,8],
    [3,6,0] ]
Run Code Online (Sandbox Code Playgroud)

我可以想象使用一个numpy.where来确定每一行中出现NAN的位置,然后使用一些循环和逻辑语句从旧数组中创建一个新数组(跳过NAN和其他行中的相应元素)但对我来说似乎不是一个非常简化的做事方式.还有其他想法吗?

Ale*_*ley 5

您可以使用布尔索引来仅选择那些不包含的列nan:

>>> x[:, ~np.isnan(x).any(axis=0)]
array([[ 1.,  2.,  4.],
       [ 2.,  4.,  8.],
       [ 3.,  6.,  0.]])
Run Code Online (Sandbox Code Playgroud)

(这与您链接的答案几乎相同;只有轴已切换.)