【问题标题】:Slice sets of columns in numpy在numpy中切片列集
【发布时间】:2019-06-26 06:15:33
【问题描述】:

考虑numpy array

>>> a = np.array([[1, 2, 3, 0, 1], [2, 3, 2, 2, 2], [0, 3, 3, 2, 2]])
>>> a
array([[1, 2, 3, 0, 1],
       [2, 3, 2, 2, 2],
       [0, 3, 3, 2, 2]])

还有一个array,其中包含要切片的一对列索引(特定列可以出现在多个对中):

b = [[0,1], [0,3], [1,4]]

如何使用ba 进行切片/广播/跨步以获得这样的结果:

array([[[1, 2],
        [2, 3],
        [0, 3]],

       [[1, 0],
        [2, 2],
        [0, 2]],

       [[2, 1],
        [3, 2],
        [3, 2]]])

【问题讨论】:

    标签: arrays numpy slice broadcast stride


    【解决方案1】:

    使用b 作为列索引来对数组进行子集化,然后转置结果:

    a[:, b].swapaxes(0, 1)
    
    # array([[[1, 2],
    #         [2, 3],
    #         [0, 3]],
    #        [[1, 0],
    #         [2, 2],
    #         [0, 2]],
    #        [[2, 1],
    #         [3, 2],
    #         [3, 2]]])
    

    【讨论】:

    • 这太棒了!谢谢
    猜你喜欢
    • 1970-01-01
    • 2018-10-05
    • 2023-03-28
    • 2022-01-16
    • 2021-11-17
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多