首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python中选择一系列列

在Python中选择一系列列
EN

Stack Overflow用户
提问于 2018-08-08 08:34:16
回答 4查看 1.6K关注 0票数 3

我有一个由第0到10列组成的数据集,我想提取仅在第1到5列中的信息,而不是第6列和第7列到第9列(这意味着不是最后一列)。到目前为止,我已经完成了以下工作:

 A=B[:,[[1:5],[7:-1]]]

但是我得到了一个语法错误,我怎么才能得到数据呢?

谢谢

EN

回答 4

Stack Overflow用户

发布于 2018-08-08 08:38:52

高级索引不需要切片列表。相反,您可以使用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]]
票数 4
EN

Stack Overflow用户

发布于 2018-08-08 08:40:55

另一种方法是独立获取切片,然后连接:

A = np.concatenate([B[:, 1:6], B[:, 7:-1]], axis=1)

使用与@jpp类似的示例数据:

B = np.random.randint(0, 10, (3, 10))

>>> B
array([[0, 5, 0, 6, 8, 5, 9, 3, 2, 0],
       [8, 8, 1, 7, 3, 5, 7, 7, 4, 8],
       [5, 5, 5, 2, 3, 1, 6, 4, 9, 6]])

A = np.concatenate([B[:, 1:6], B[:, 7:-1]], axis=1)

>>> A
array([[5, 0, 6, 8, 5, 3, 2],
       [8, 1, 7, 3, 5, 7, 4],
       [5, 5, 2, 3, 1, 4, 9]])
票数 2
EN

Stack Overflow用户

发布于 2018-08-08 08:41:06

联合射程怎么样?

B[:, np.union1d(range(1,6), range(7,10))]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51737122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档