【问题标题】:Numpy indexing to get values of 2nd dim depending on 1st dimNumpy 索引以根据第一个昏暗获取第二个昏暗的值
【发布时间】:2018-05-01 10:20:39
【问题描述】:

我有一个二维 numpy 数组,例如

a = np.array([ [1,2,3], [2,3,4], [3,4,5], [4,5,6] ])

[[1 2 3]
 [2 3 4]
 [3 4 5]
 [4 5 6]]

使用a[:,-1],我得到一个列表,其中包含第二个暗淡的最后一个值:[3 4 5 6]

但是现在,我怎样才能更加灵活并根据第一个暗淡获得第二个暗淡的值。比如我要第一行的最后一个值,第二行的中间值和第三、四行的第一个值,这样结果就是[3 3 3 4]

我可以使用 numpy 索引直接管理它吗?到目前为止,我所有的努力都失败了,但我并没有声称我可以完全理解所有索引机制。

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    您可以使用列表并将它们传递给切片运算符,如下所示:

    a[[0,1,2,3],[2,1,0,0]]
    > array([3, 3, 3, 4])
    

    您唯一需要记住的是,两个列表的长度必须相同。然后发生的是解释器将两个列表的元素配对并提取相应的元素。

    【讨论】:

    • 酷,效果很好。我尝试了类似a[:,[2,1,0,0]] 的方法,但由于我对索引/切片的误解而失败了。
    【解决方案2】:

    首先我“镜像”了数组,然后我取了对角线并与对角线最后一个元素下的剩余部分连接。这是你需要的吗?

    如果您想进一步自定义,请查看对角线上的文档,您可以从第一个轴上的任何元素开始对角线。

    >>> a
    array([[1, 2, 3],
           [2, 3, 4],
           [3, 4, 5],
           [4, 5, 6],
           [5, 6, 7]])
    >>> b = np.fliplr(a)
    >>> np.concatenate((b.diagonal(), b[b.shape[1]:][:, -1]))
    array([3, 3, 3, 4, 5])
    >>>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-16
      • 2016-11-30
      • 2019-08-06
      • 1970-01-01
      相关资源
      最近更新 更多