我想提取 NumPy 数组的第二列和第三列到第五列,我该怎么做?
A = array([[0, 1, 2, 3, 4, 5, 6], [4, 5, 6, 7, 4, 5, 6]])
A[:, [1, 4:6]]
这显然是行不通的。
假设我已经理解你——明确指定你想要的输出通常是个好主意,因为它并不明显——你可以使用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])
也许你正在寻找这个?
In [10]: A[1:, [1]+range(3,6)]
Out[10]: array([[5, 7, 4, 5]])
请注意,这将为您提供除第一行之外的所有行的第二、第四、第五和六列。
第二个元素是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]
.
希望这可以帮助。