【问题标题】:Using non-consecutive sequences to select indices from numpy array [duplicate]使用非连续序列从 numpy 数组中选择索引 [重复]
【发布时间】:2026-01-03 04:20:02
【问题描述】:

我有一个 2d numpy 数组,matrix_a,形状为 2x20。如何选择第 5:8 列和第 15:18 列。

matrix_a = np.array([[1,2,3,4,5...,19,20],
                     [1,2,3,4,5...,19,20]])

我要选择:

    [[5,6,7,15,16,17],
     [5,6,7,15,16,17]]

我可以使用matrix_a[0,5:8]单独选择列,有没有办法一次选择所有列?

除了 0-index vs 1-index,在 MATLAB 中,我所要做的就是:

matrix_a(:,[5:8, 15:18])

python中有类似的简单命令吗?

【问题讨论】:

    标签: numpy


    【解决方案1】:

    您可以使用numpy.r_ 组合两个切片,这是一种方便的方式将切片对象转换为沿第一个轴连接。它可以接受混合列表、数组、标量和切片符号,例如np.r_[5, np.array([1,2]), [3]*2, 15:18] 也是一个验证构造,它给出了array([ 5, 1, 2, 3, 3, 15, 16, 17])

    matrix_a = np.tile(np.arange(1, 21), 2).reshape(2, 20)
    
    matrix_a[:, np.r_[5:8, 15:18]]
    #array([[ 6,  7,  8, 16, 17, 18],
    #       [ 6,  7,  8, 16, 17, 18]])
    

    【讨论】: