这个问题在这里已有答案:
我有一个2d numpy数组,matrix_a,形状2x20。如何选择第5列和第5列以及第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中有一个类似的,简单的命令吗?
您可以使用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]])