使用numpy中的行和列选择构造矩阵

时间:2017-09-18 16:22:57

标签: numpy matrix

.as-console-wrapper { max-height: 100% !important; top: 0; }中,假设我有一个矩阵NumPy

X

如何使用X = array([[3, 1, 4, 5], [5, 1, 2, 1], [4, 4, 0, 1], [0, 3, 0, 3], [1, 2, 3, 4]) 的第一个(第0行),最后一个第二个和第三个(第3,4行)构建一个新矩阵?

结果矩阵是:

X

我无法列出我想要包含在新矩阵中的所有行,因为对于我拥有的数据,它就像选择原始矩阵的(20,60),(90,120)行来构造一个新的基质

1 个答案:

答案 0 :(得分:1)

使用np.r_获取那些连接的行索引,并简单地索引到输入数组的行中,如下所示 -

X[np.r_[0, 3:5]]        # for sample case

X[np.r_[20:60, 90:120]] # for actual case

示例运行 -

In [146]: X
Out[146]: 
array([[3, 1, 4, 5],
       [5, 1, 2, 1],
       [4, 4, 0, 1],
       [0, 3, 0, 3],
       [1, 2, 3, 4]])

In [147]: X[np.r_[0, 3:5]]
Out[147]: 
array([[3, 1, 4, 5],
       [0, 3, 0, 3],
       [1, 2, 3, 4]])

在更大的随机数组上进行形状测试的示例 -

In [150]: X = np.random.rand(200,10)

In [151]: X[np.r_[20:60, 90:120]].shape
Out[151]: (70, 10) # 70 rows selected