python - 用数组索引多维数组

标签 python arrays numpy

我有一个多维 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 切片?

最佳答案

Numpy 仅使用您的数组来索引第一个维度。作为一般规则,多维数组的索引应该在元组中。这将使您更接近您想要的:

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

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

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

关于python - 用数组索引多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16260806/

相关文章:

php - preg_replace/e 修饰符被弃用,使用数组作为模式和替换

arrays - 数组 SDE 面试问题的恒定空间限制。 AND 对经典面试问题的疑惑

python - 如何将单列 Pandas DataFrame 转换为 Series

python - 我应该以哪种格式保存我的 python 脚本输出?

python - 如何在 Matplotlib 中与线程一起执行动画?

javascript - 从javascript中的json格式获取未知父节点的子节点

python - np.loadtxt() 如何从txt文件中每隔一行加载? Python

Python Numpy - 创建长度基于一维数组的二维数组

python - 为某些值构造函数时python/numpy中的AttributeError

python:无法连接 'str' 和 'long' 对象