首页 > 解决方案 > 使用元组索引 Numpy 数组维度

问题描述

我有一个 numpy 数组,例如arr = np.arange(16).reshape(2,2,2,2)

arr[:, dim2, dim3]当我有(dim2, dim3)一个元组时,我想动态访问。做这个的最好方式是什么?

标签: pythonnumpynumpy-ndarray

解决方案


如果您的数组的维数可能不同,请尝试这样的操作:

some_tuple = (dim2, dim3) # Could be (dim2, dim3, ..., dimN)

arr[(slice(None),) + some_tuple]

在这种特殊情况下,(slice(None),) + some_tuple与 相同(slice(None), dim2, dim3)slice(None)或多或少等价于“ :”,但可以用在比“ :”更多的地方。请注意,我放入slice(None)了一个单元素元组(即(slice(None),)),以便可以将其添加到some_tuple. 还要注意,在 之后有一个逗号slice(None),也就是说,我不会只写(slice(None))没有逗号。如果没有额外的逗号,它将无法工作。


推荐阅读