在numpy数组Python中提取特定范围的列

Posted

技术标签:

【中文标题】在numpy数组Python中提取特定范围的列【英文标题】:Extract Specific RANGE of columns in numpy array Python 【发布时间】:2016-06-06 06:16:17 【问题描述】:

我有一个数组:

e = np.array([[ 0,  1,  2,  3, 5, 6, 7, 8],
              [ 4,  5,  6,  7, 5, 3, 2, 5],
              [ 8,  9, 10, 11, 4, 5, 3, 5]])

我想通过 RANGE 中的列来提取数组,如果我想取范围 1 到 5 中的列,它将返回

e = np.array([[ 1,  2,  3, 5, ],
              [ 5,  6,  7, 5, ],
              [ 9, 10, 11, 4, ]])

如何解决?谢谢

【问题讨论】:

【参考方案1】:

您可以只使用 e[:, 1:5] 来检索您想要的内容。

In [1]: import numpy as np

In [2]: e = np.array([[ 0,  1,  2,  3, 5, 6, 7, 8],
   ...:               [ 4,  5,  6,  7, 5, 3, 2, 5],
   ...:               [ 8,  9, 10, 11, 4, 5, 3, 5]])

In [3]: e[:, 1:5]
Out[3]:
array([[ 1,  2,  3,  5],
       [ 5,  6,  7,  5],
       [ 9, 10, 11,  4]])

https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html

【讨论】:

我想你的意思是e[:, 1:5] 如果数组由十进制数组成。我希望检索 e[:, 1.1:5.2] 即提取 1.1 到 5.2 之间的数据集及其对应列中的值,我们该怎么做? 如果我想选择范围怎么办;假设列 1:3 和 5:7?【参考方案2】:

Numpy 行和列索引从 0 开始计数。

先指定行,然后指定列,用逗号分隔行与列。

单独使用时,“:”(冒号)用于缩短所有行或所有列。

当行或列说明符有范围时,“:”与指定包含起始范围和不包含结束范围的数字配对。

例如

import numpy as np
np_array = np.array( [ [ 1, 2, 3, ],
                       [ 4, 5, 6, ],
                       [ 7, 8, 9  ] ]  )

first_row = np_array[0,:]
first_row
output: array([1, 2, 3])

last_column = np_array[:,2]
last_column
output: array([3, 6, 9])

first_two_vals = np_array[0,0:2]
first_two_vals
output: array([1, 2])

【讨论】:

以上是关于在numpy数组Python中提取特定范围的列的主要内容,如果未能解决你的问题,请参考以下文章

删除numpy数组中的列范围

创建numpy数组,其中值在其他两个相同大小排列的范围内

如何在python中将特定范围的列扁平化为一个?

提取时间戳在特定范围内的 Python Pandas 记录[关闭]

python如何挑选矩阵中的不相领的列组成新的矩阵

如何在python中访问列表列表中的列