在.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)行来构造一个新的基质
答案 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