首页 > 解决方案 > 从 numpy 数组中查找和删除列

问题描述

我正在尝试从数组中删除特定列:

data = array([[ 6,  3,  3],
              [ 7,  4, -1]])

target = array([[3]
                [-1]])

我想找到与data相同的列的索引target,以便我可以调用:

np.delete(data, index, axis=1)

它看起来像是allwhere可能是答案的某种组合,但我就是无法解决。

标签: pythonnumpyindexingwhere-clause

解决方案


掩码(data == target).all(axis=0)将检查列是否相等。你不需要对whereor做任何事情delete。只需按原样使用掩码:

mask = (data == target).all(axis=0)
data = data[:, ~mask]

事实上,计算不同元素的掩码可能会更快,因为这些是您想要保留的。

mask = (data != target).any(axis=0)
data = data[:, mask]

推荐阅读