2

我有一个三行约 25000 列的数组。我正在尝试删除在三列中的任何一列中具有 NaN 值的那些列,但努力这样做。到目前为止,我已经设法执行以下操作,设法删除具有 NaN 值的行。

x = np.array([[1,2,3,1,2,3], 
              [4,5,np.nan,3,5,np.nan], 
              [7,8,9,4,5,6],])

x = x[~np.isnan(x).any(axis=1)]

如果我使用axis = 0,这不起作用。我试图不将其转换为数据框,因为它在工作流程中用作数组,但我想一种解决方法是将其转换为数据框,删除并将其重新组织为数组。也许有人知道如何将它作为一个数组来做:)

4

1 回答 1

2

您可以使用np.isnan(x).any(axis=0)查找包含至少一个np.nan值的列,然后您可以使用此掩码过滤给定数组的列。利用:

x = np.array([[1,2,3,1,2,3], 
              [4,5,np.nan,3,5,np.nan], 
              [7,8,9,4,5,6],])

x = x[:, ~np.isnan(x).any(axis=0)]
print(x)

这打印:

[[1. 2. 1. 2.]
 [4. 5. 3. 5.]
 [7. 8. 4. 5.]]
于 2020-05-13T19:31:43.730 回答