1

我想提取 NumPy 数组的第二列和第三列到第五列,我该怎么做?

A = array([[0, 1, 2, 3, 4, 5, 6], [4, 5, 6, 7, 4, 5, 6]])
A[:, [1, 4:6]]

这显然是行不通的。

4

3 回答 3

5

假设我已经理解你——明确指定你想要的输出通常是个好主意,因为它并不明显——你可以使用numpy.r_

In [27]: A
Out[27]: 
array([[0, 1, 2, 3, 4, 5, 6],
       [4, 5, 6, 7, 4, 5, 6]])

In [28]: A[:, [1,3,4,5]]
Out[28]: 
array([[1, 3, 4, 5],
       [5, 7, 4, 5]])

In [29]: A[:, r_[1, 3:6]]
Out[29]: 
array([[1, 3, 4, 5],
       [5, 7, 4, 5]])

In [37]: A[1:, r_[1, 3:6]]
Out[37]: array([[5, 7, 4, 5]])

然后您可以根据需要将其展平或重塑。 r_基本上是生成正确索引的便利功能,例如

In [30]: r_[1, 3:6]
Out[30]: array([1, 3, 4, 5])
于 2012-10-17T11:13:19.270 回答
1

也许你正在寻找这个?

In [10]: A[1:, [1]+range(3,6)]
Out[10]: array([[5, 7, 4, 5]])

请注意,这将为您提供除第一行之外的所有行的第二、第四、第五和六列。

于 2012-10-17T11:04:59.623 回答
0

第二个元素是A[:,1]。元素 3-5(我假设你想要包含)是A[:,2:5]. 您将无法通过一次调用来提取它们。要将它们作为数组获取,您可以这样做

import numpy as np

A = np.array([[0, 1, 2, 3, 4, 5, 6], [4, 5, 6, 7, 4, 5, 6]])
my_cols = np.hstack((A[:,1][...,np.newaxis], A[:,2:5]))

这些np.newaxis东西只是为了制作A[:,1]一个二维数组,与A[:,2:5].

希望这可以帮助。

于 2012-10-17T11:06:51.963 回答