python - 根据一维条件删除 ndarray 中的元素
问题描述
在 Numpy ndarray 中,如何根据不同维度中的条件删除维度中的元素?
我有:
[[[1 3]
[1 4]]
[[2 6]
[2 8]]
[[3 5]
[3 5]]]
我想根据条件删除x[:,:,1] < 7
所需的输出([:,1,:]
已删除):
[[[1 3]
[1 4]]
[[3 5]
[3 5]]]
编辑:修正错字
解决方案
这可能有效:
x[np.where(np.all(x[..., 1] < 7, axis=1)), ...]
产量
array([[[[1, 3],
[1, 4]],
[[3, 5],
[3, 5]]]])
你确实得到了一个额外的维度,但这很容易删除:
np.squeeze(x[np.where(np.all(x[..., 1] < 7, axis=1)), ...])
简要介绍它的工作原理:
首先条件:x[..., 1] < 7
。
然后测试条件是否对沿特定轴的所有元素都有效:np.all(x[..., 1] < 7, axis=1)
.
然后,使用where
获取索引而不是布尔数组:np.where(np.all(x[..., 1] < 7, axis=1))
。
并将这些索引插入相关维度:x[np.where(np.all(x[..., 1] < 7, axis=1)), ...]
.
推荐阅读
- python - 在 IBM Watson Studios 上加载 json 文件
- flutter - 如何在不显示键盘的情况下聚焦 TextField?
- java - 从数据库表中填充 Java HashMap
- labview - LabVIEW:(取消)按名称捆绑并交换颜色
- android - 唯一约束失败:query_table.ID(代码 1555 SQLITE_CONSTRAINT_PRIMARYKEY[1555]
- go - 附加到 []interface{} 问题
- amazon-web-services - Nuxt Generate 不使用 CodeBuild 创建 dist 文件夹
- python - 如何通过 AWS SDK boto3 向数字海洋空间进行分段上传?
- wpf - DocumentHeaderTemplate 影响 LayoutAnchorables 上的标题集
- python - Python 脚本不会在新机器上运行