【问题标题】:Numpy: How to index 2d array with 1d array?Numpy:如何用一维数组索引二维数组?
【发布时间】:2019-07-28 18:09:34
【问题描述】:

我有一个二维数组:

a = np.random.randint(100, size=(6, 4))
[[72 76 40 11]
 [48 82  6 87]
 [53 24 25 99]
 [ 7 94 82 90]
 [28 81 10  9]
 [94 99 67 58]]

还有一个一维数组:

idx = np.random.randint(4, size=6)
[0, 3, 2, 1, 0, 2]

是否可以对二维数组进行索引,使得结果为:

a[idx]
[72, 87, 25, 94, 28, 67]

【问题讨论】:

    标签: python arrays numpy indexing


    【解决方案1】:

    既然你有列索引,你所需要的只是行索引。您可以使用arange 生成这些。

    >>> a[np.arange(len(a)), idx]
     array([72, 87, 25, 94, 28, 67])
    

    【讨论】:

      【解决方案2】:

      没有arange,有什么办法可以解决这个问题吗?对我来说,这样的事情似乎违反直觉

      a[idx.reshape(-1,1)]
      

      a[:,idx]
      

      不会产生这个结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-04-10
        • 2020-07-30
        • 2011-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-16
        相关资源
        最近更新 更多