如何重塑numpy数组以移除具有nan的所有元素?

2024-03-28 14:02:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python中有一个numpy数组,其结构如下:

array([[NaN, NaN, NaN],
       [a, b, NaN],
       [c, d, e],
       [NaN, NaN, f])

每列具有相同数量的非NaN值,但它们在不同的行开始和结束。我希望最终得到一个结构如下的数组:

array([a, b, e],
      [c, d, f])

(也就是说,移除所有的nan,修改数组的形状以适应数据点的数量。)但是,我不知道如何有效地做到这一点。你知道吗

我试过使用:

x = x[~numpy.isnan(x)] 

以及

x = x[numpy.logical_not(numpy.isnan(x))] 

但这两个都将阵列夷为平地。你知道吗


Tags: 数据numpy数量not数组nan结构array
2条回答

变换数组的位置,过滤掉NaN,并重新调整其形状(2是每列的not NaN值的数目)。你知道吗

x = x.T[~numpy.isnan(x.T)].reshape(-1, 2).T

假设要保留的是列数:

num_cols = x.shape[1]
x_trimmed = x[~numpy.isnan(x)].reshape(-1, num_cols)

你不需要变换数组。你知道吗

相关问题 更多 >