使用非连续序列从numpy数组

时间:2017-12-27 05:14:22

标签: numpy

我有一个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指数与1指数之外,在MATLAB中,我所要做的就是:

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

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

1 个答案:

答案 0 :(得分:3)

您可以使用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]])