【问题标题】:Deleting zero rows and columns in a 2D array删除二维数组中的零行和列
【发布时间】:2019-01-12 02:50:23
【问题描述】:

如何在 python 中删除零列?

我想出了如何使用代码 array[~(array==0).all(1)] 删除行,我想我可以简单地写 array[~(array==0).all(0)] 来删除列,但这给了我一个错误(布尔索引与维度 0 的索引数组不匹配;维度是 4,但对应的布尔维度是 6)。这是为什么呢?

【问题讨论】:

  • array[:, ~(array==0).all(0)] ?

标签: python arrays


【解决方案1】:

~(array==0).all(0) 语句会给你一个掩码,要保留。

例如

>>> array
array([[0, 0, 0],
       [1, 1, 0]])
>>> ~(array==0).all(0)
array([ True,  True, False])

所以你只需要将遮罩应用到数组的第二个轴上。

因此,

>>> array[:,~(array==0).all(0)]
array([[0, 0],
       [1, 1]])

【讨论】:

  • @asdfjkl 没问题。
【解决方案2】:

这可能会有所帮助-

import numpy as np
dataset = np.array([[ 5, 8, 0], [ 1, 2, 0]])
dataset

>> array([[5, 0, 0],
      [1, 2, 0]])

让我们删除

new_dataset= np.delete(dataset,np.where(~dataset.any(axis=0))[0], axis=1)
new_dataset

>>
array([[5, 0],
   [1, 2]])

只有当整列为0时才删除。

【讨论】:

  • 谢谢。这实际上可能比我的更简单。
猜你喜欢
  • 2012-06-26
  • 1970-01-01
  • 2012-01-23
  • 2014-12-05
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-11
相关资源
最近更新 更多