Python NumPy:将多维索引的子集传递给数组
假设我有一个数组和一组(子)索引:Python NumPy:将多维索引的子集传递给数组,python,arrays,numpy,pytorch,multi-index,Python,Arrays,Numpy,Pytorch,Multi Index,假设我有一个数组和一组(子)索引: arr=np.array([[0,1,2], [3,4,5], [6,7,8]], [[9, 10,11], [12,13,14], [15,16,17]]]) idx=[1,2] 我希望得到,对于数组dim=0的每个元素,相应的idx切片,即: arr[:,idx[0],idx[1]] 数组([5,14]) 有没有一种方法可以在不硬编码每个索引的情况下进行切片?比如: ar[:,*idx] 注意,我当前的解决方法是: idx=[slice(a.sha
arr=np.array([[0,1,2],
[3,4,5],
[6,7,8]],
[[9, 10,11],
[12,13,14],
[15,16,17]]])
idx=[1,2]
我希望得到,对于数组dim=0的每个元素,相应的idx
切片,即:
arr[:,idx[0],idx[1]]
数组([5,14])
有没有一种方法可以在不硬编码每个索引的情况下进行切片?比如:
ar[:,*idx]
注意,我当前的解决方法是:
idx=[slice(a.shape[0]),*idx]
a[idx]
但我想知道NumPy(或PyTorch,或相关的库)是否支持这种情况下更“优雅”自然的多维索引语法。我认为您的解决方法已经非常接近了 您可以尝试这样做,使其更加简洁:
import numpy as np
arr = np.array([[[0,1,2],
[3,4,5],
[6,7,8]],
[[9, 10,11],
[12,13,14],
[15,16,17]]])
idx = [1,2]
print(
arr[(slice(None), *idx)]
)
这是因为:
与切片(无)