首页 > 解决方案 > 使用花哨的索引从 Numpy 数组中查找和删除全零列

问题描述

如何在 numpy 数组中找到全为零的列,然后将它们从数组中删除?我正在寻找一种方法来获取列索引,然后使用这些索引进行删除。

标签: arraysnumpyindexingslice

解决方案


您可以使用np.argwhere, withnp.all来查找您的索引。要删除它们,请使用np.delete.

示例

查找您的0列:

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

idx = np.argwhere(np.all(a[..., :] == 0, axis=0))

>>> idx
array([[2],
       [4]])

删除您的列

a2 = np.delete(a, idx, axis=1)

>>> a2
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

推荐阅读