我有两个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行。怎样才能做到呢?
一个简单的单行解决方案是使用delete
和argwhere
X = np.delete(X, np.argwhere(np.isin(y, l)).flatten(), axis=0)
输出array([[1, 2, 3],
[3, 6, 1]])