使用数组索引多维数组

3

我有一个多维度的NumPy数组:

In [1]: m = np.arange(1,26).reshape((5,5))

In [2]: m
Out[2]:
array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10],
       [11, 12, 13, 14, 15],
       [16, 17, 18, 19, 20],
       [21, 22, 23, 24, 25]])

还有一个数组 p = np.asarray([[1,1],[3,3]])。我希望p将作为m的索引数组,即:

m[p]
array([7, 19])

然而我得到了:
In [4]: m[p]
Out[4]:
array([[[ 6,  7,  8,  9, 10],
        [ 6,  7,  8,  9, 10]],

       [[16, 17, 18, 19, 20],
        [16, 17, 18, 19, 20]]])

如何使用p获取所需的片段m


等等... 嗯... 什么? - Mr_Spock
1个回答

4

Numpy会使用您的数组仅索引第一维。通常,多维数组的索引应该是一个元组。这将使您更接近您想要的结果:

>>> m[tuple(p)]
array([9, 9])

但是现在你用1两次索引第一维,用3两次索引第二维。要先用1和3索引第一维,然后再用1和3索引第二维,你可以对数组进行转置:

>>> m[tuple(p.T)]
array([ 7, 19])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接