在numpy中从3d获取特定的2d数组

2024-04-26 22:13:53 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种方法可以避免使用for循环,而仅仅通过调用arr和一些索引来获得结果?dim1可能等于50000,dim2可能等于1000,dim3可能固定为3。你知道吗

import numpy as np
dim1 = 10
dim2 = 2
dim3 = 3
arr = np.arange(60).reshape(dim1,dim2,dim3)
arr2 = np.arange(dim1*dim2).reshape(dim1,dim2)
np.mod(arr2,dim3,out=arr2)

res = []
rng = np.arange(dim1)
for x in range(dim2):
    sl = arr2[:,x]
    temp = arr[rng,x,sl]
    res.append(temp)
res = np.asarray(res).T

基本上,我想从arr中提取值,arr是一个3D数组,但是矩阵arr2指示要选择哪些列。你知道吗

最好的


Tags: 方法importfornprestemparrrng