python - 获取任意形状的多维 numpy 数组的索引并将其用于另一个数组
问题描述
我有两个多维数组a
并且b
形状相同:
print(a.shape) -> (100, 20, 3, 3)
print(b.shape) -> (100, 20, 3, 3)
现在我只想从a
符合特定条件的情况中获取值,例如:
wanted_value = 5
result_a = a[a[:, :, :, 0] == wanted_value]
但是,这很好用,现在假设我想从另一个索引数组b
中获取数据,这些索引对应于 array 中找到的元素的索引a
。是否有可能以某种方式使用我可以从搜索数组中获得的索引在数组a
上的某个条件下从数组b
中获取b
与数组具有的相同形状的相同索引相对应的数据a
?我需要这个,因为我无法在数组中搜索b
我需要的条件,但数组的数据/元素分别b
对应于数组a
。
这可能吗?我试过这样的事情:
indices = np.where(a[a[:, :, :, 0] == wanted_value])
results_b = b[indices]
解决方案
是的。它比你想象的还要简单:
b[a[:, :, :, 0] == wanted_value]
它的工作方式是它a[:, :, :, 0] == wanted_value
自己创建一个带有 的 Numpy 数组,dtype=bool
在文档中称为掩码。您可以将其应用于任何相同形状的数组。
推荐阅读
- java - netty sslcontextbuilder 收到 ClientHello 时服务器 sslcontext 异常
- java - 如何在 APDU (Javacard) 中发送我的公钥?
- c# - 在没有运行 Visual Studio 的情况下启动 C# 应用程序时会出现延迟
- html - 使用 ViewerJs 以 odp 格式显示数据时出现“加载资源失败”错误
- python - 散列 np.array -> int 的确定性方法
- javascript - 动画后更改显示
- linux - 从 docker 容器内部访问主机外壳
- ffmpeg - ffmpeg“低估了所需的缓冲区大小”
- reactjs - 无法在redux的reducer中添加购物车中的现有产品与react native
- swiftui - 显示加载图像直到响应