python - 在不循环的情况下访问 3D numpy 数组中的多列
问题描述
我有一个A
带有 shape的大型 3D 数组(N, M, L)
。
我有一个要访问的列的坐标列表,存储在二维数组中B
:
[[i1 j1]
[i2 j2]
[i3 j3]
.... ]
我有一些工作正常但涉及循环B
和访问A
多次的东西。有没有办法使用切片或其他方法来避免这种情况?
到目前为止我的代码:
data_out = []
for p in B:
i, j = p
col = A[:, i, j]
data_out.append(col)
解决方案
使用花哨的索引:
A[(slice(None), *B.T)].T
显式括号是使用星形扩展所必需的,这意味着您必须:
显式写为slice(None)
. 你也可以做
A[:, B[:, 0], B[:, 1]].T
推荐阅读
- python - 使用/不使用 python 在 scapy 打印 ping 上嗅探(wireshark)两次
- python-3.x - astropy:如何检查参数是否具有正确的单位
- swift - 将值从 Alamofire 获取请求传递给变量
- c++ - 插入 unordered_map 丢失了
- android - 构建 Android 库时出错:不支持直接本地 .aar 文件依赖项
- react-native - How to render photo from camera roll within a card
- c - sscanf changing the value of the sentence being parsed
- r - R neuralnet package: Can't train neural network
- windows - Go program as windows service
- python - Python3: Does the built-in function "map" have a bug?