python - Python Numpy - 没有循环的二维数组中的 3 维索引
问题描述
我想使用具有相同形状的索引数组构造一个形状的数组V1
,应用于形状的数组。用循环构造它的方法如下。(n,p,q)
idx
V0
(p,q)
for i in range(n):
V1[i,:,:] = V0[idx[i,:,:],range(q)]
换句话说,idx[i,:,:]
数组包含 的第 1 维元素的索引V0
。我将它与在 中捕获的第二维的关联索引一起应用range(q)
,以获取沿最终数组的第一个维度的相应元素V1
。
我的问题如下:有没有一种方法可以V1
通过使用广播/索引技术来构建而不循环?
谢谢你。
解决方案
刚刚怎么样
V1 = V0[idx, range(q)] #?
例子:
import numpy as np
# set up dummy data
n,p,q = 3,4,5
V1 = np.empty((n,p,q))
V0 = np.random.rand(p,q)
idx = np.random.randint(0,n,(n,p,q))
# original
V1_old = V1.copy()
for i in range(n):
V1_old[i,:,:] = V0[idx[i,:,:],range(q)]
# new
V1_new = V0[idx, range(q)]
# test
print(np.array_equal(V1_old, V1_new)) # True
推荐阅读
- .htaccess - 通过 htaccess 将别名 TLD 重定向到语言参数 URL
- python - 如何处理呈现选定的模板 - 获取 ,,Http 请求没有属性'' 元错误
- c# - 节省团结的最佳时间
- python - Pythonic 调用函数的方法
- ros - 如何完全重置 PCL OctreePointCloudChangeDetector 二级缓冲区/结构?
- html - - th/td 元素上的 webkit-background 渐变导致导航栏崩溃大幅减慢
- ios - 在 SwiftUI 中,如何去除 Form 对象后多余的空白?
- r - 如何按多列合并行,获取多列中的最后一个非空值?
- postgresql - INSERT 具有比表达式更多的目标列 - 使用 SELECT 查询插入空表时
- apache-spark - 从列有条件地计数