与此问题类似,我想从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和其他行中的相应元素)但对我来说似乎不是一个非常简化的做事方式.还有其他想法吗?
您可以使用布尔索引来仅选择那些不包含的列nan:
>>> x[:, ~np.isnan(x).any(axis=0)]
array([[ 1., 2., 4.],
[ 2., 4., 8.],
[ 3., 6., 0.]])
Run Code Online (Sandbox Code Playgroud)
(这与您链接的答案几乎相同;只有轴已切换.)