首页 > 解决方案 > 获取 NumPy 数组中多个索引处的元素

问题描述

正如文档所解释的那样,我正在尝试访问 NumPy 数组的特定行和列,但我认为我遗漏了一些东西。

我有以下数组:

arr = np.random.randint(10, size=(6, 4))
array([[1, 9, 6, 4],
       [8, 5, 0, 3],
       [3, 7, 3, 2],
       [1, 4, 8, 0],
       [5, 5, 8, 0],
       [0, 6, 4, 9]])

我想得到第一行和最后一行;以及第一、第三和最后一列,所以我正在尝试:

arr[(0, -1),(0, 1, 3)]

但这会产生以下错误:

IndexError: shape mismatch: indexing arrays could not be broadcast together with shapes (2,) (3,)

我想我误解了这种类型的整数索引。我希望这个输出:

array([[1, 9, 4],
       [0, 6, 9]])

我可以这样做,但感觉真的很尴尬:

arr[(0,-1),:][:,(0,1,3)]

如何获得不同维度的第 i 个元素?

标签: pythonarrayspython-2.7numpy

解决方案


您正在寻找np.ix_

arr[np.ix_((0, -1),(0, 1, 3))]

结果是

array([[1, 9, 4],
       [0, 6, 9]])

推荐阅读