Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python NumPy:将多维索引的子集传递给数组_Python_Arrays_Numpy_Pytorch_Multi Index - Fatal编程技术网

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)]
)
这是因为
切片(无)