我有一个由0到10列组成的数据集,我想提取仅在第1列到第5列,而不是第6列和第7列到第9列的信息(这意味着不是最后一列).到目前为止,我已经完成了以下工作:
A=B[:,[[1:5],[7:-1]]]
但是我遇到了语法错误,我怎样才能得到这些数据?
谢谢
解决方法:
高级索引不会获取切片列表的列表.相反,你可以使用numpy.r_
.这个函数不采用负指数,但你可以通过使用np.ndarray.shape
来解决这个问题:
A = B[:, np.r_[1:6, 7:B.shape[1]-1]]
请记住在第二部分添加1,因为a:b不包括b,因为slice(a,b)不包含b.另请注意,索引从0开始.
这是一个演示:
import numpy as np
B = np.random.randint(0, 10, (3, 11))
print(B)
[[5 8 8 8 3 0 7 2 1 6 7]
[4 3 8 7 3 7 5 6 0 5 7]
[1 0 4 0 2 2 5 1 4 2 3]]
A = B[:,np.r_[1:6, 7:B.shape[1]-1]]
print(A)
[[8 8 8 3 0 2 1 6]
[3 8 7 3 7 6 0 5]
[0 4 0 2 2 1 4 2]]