用数组索引多维数组

2023-12-04

我有一个多维 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, i.e.:

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]]])

我怎样才能得到想要的切片m using p?


Numpy 使用数组仅索引第一个维度。作为一般规则,多维数组的索引应该位于元组中。这会让你更接近你想要的:

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

但现在您使用 1 对第一个维度索引两次,使用 3 对第二个维度索引两次。要使用 1 和 3 索引第一个维度,然后也使用 1 和 3 索引第二个维度,您可以转置数组:

>>> m[tuple(p.T)]
array([ 7, 19])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用数组索引多维数组 的相关文章

随机推荐