如何访问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]])