在Python中选择一系列列

我有一个由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]]
上一篇:字符串中子字符串的基本索引重复(python)


下一篇:python – TypeError:’float’对象不可订阅