python - ndarray 按索引从另一个数组中的条件删除行
问题描述
我有两个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 - 的第二个和第三个元素在 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]])
推荐阅读
- excel - Excel 宏另存为 PDF 文件名错误
- amazon-s3 - S3 NextContinuationToken / ContinuationToken:是否过期?
- c++ - 如何从结构列表中过滤信息
- material-ui - 在 DateRangePicker 中设置 InputProps 的正确方法是什么
- python - 从列表中删除带有数字的项目
- javascript - Angular JS - 可排序表
- python - 如何使用长度 python Faker 包生成假名
- xamarin - 如何使用关联的视图模型以编程方式将选项卡添加到选项卡页面?
- java - Gmail API - 从需要的新邮件中下载附件 SCOPES - JAVA
- arrays - 如何在 ruby 中获取特定的数组索引?