如何访问NumPymultidimensional array的第i列?

假设我有:

test = numpy.array([[1, 2], [3, 4], [5, 6]]) 

test[i]让我itharrays线(例如[1, 2] )。 我如何访问第i列? (例如[1, 3, 5] )。 另外,这将是一个昂贵的操作?

 >>> test[:,0] array([1, 3, 5]) 

同样的,

 >>> test[1,:] array([3, 4]) 

让你访问行。 这在NumPy参考的 1.4节(索引)中有介绍。 这很快,至less在我的经验。 这肯定比访问循环中的每个元素要快得多。

如果您想一次访问多个列,则可以这样做:

 >>> test = np.arange(9).reshape((3,3)) >>> test array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) >>> test[:,[0,2]] array([[0, 2], [3, 5], [6, 8]]) 
 >>> test[:,0] array([1, 3, 5]) 

这个命令给你一个行向量,如果你只是想循环它,这是很好的,但如果你想与其他一些维度为3xN的arrays,你将有

ValueError:所有input数组必须具有相同的维数

 >>> test[:,[0]] array([[1], [3], [5]]) 

为您提供了一个列向量,以便您可以进行连接或hstack操作。

例如

 >>> np.hstack((test, test[:,[0]])) array([[1, 2, 1], [3, 4, 3], [5, 6, 5]]) 

你也可以转置并返回一行:

 In [4]: test.T[0] Out[4]: array([1, 3, 5]) 
 >>> test array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]) >>> ncol = test.shape[1] >>> ncol 5L 

那么你可以这样select第2到第4列:

 >>> test[0:, 1:(ncol - 1)] array([[1, 2, 3], [6, 7, 8]])