narray根据索引从另一个数组的条件中删除行



我有两个ndarrays,其中X的第一维长度与y的大小相同:

X = np.asarray([[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[3, 6, 1]])
y = np.asarray([1, 0, 2, 3])

和我有一个列表:

l = [0, 2, 7]

我想删除X中的每一行,如果y中相同索引的行值在l中。在这种情况下,我将写入:

X = np.asarray([[1, 2, 3],
[3, 6, 1]])

这是因为y -中的第2和第3个元素在l中。因此,应该从X中删除第2和第3行。怎样才能做到呢?

一个简单的单行解决方案是使用deleteargwhere

X = np.delete(X, np.argwhere(np.isin(y, l)).flatten(), axis=0)

输出
array([[1, 2, 3],
[3, 6, 1]])

相关内容

  • 没有找到相关文章

最新更新