考虑到:

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

Test [i]给出第i行(例如[1,2])。如何访问第I列?(例如[1,3,5])。还有,这手术会很贵吗?


当前回答

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

这个命令给了你一个行向量,如果你只是想循环遍历它,这是可以的,但如果你想hstack其他一些维度为3xN的数组,你会有

ValueError:所有输入数组的维数必须相同

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

给你一个列向量,这样你就可以做连接或hstack操作。

e.g.

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

其他回答

>>> test
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])

>>> ncol = test.shape[1]
>>> ncol
5L

然后你可以这样选择第2 - 4列:

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

访问列0:

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

访问第0行:

>>> test[0, :]
array([1, 2])

这在NumPy引用的第1.4节(索引)中介绍。这很快,至少以我的经验来看。这当然比在循环中访问每个元素要快得多。

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

这个命令给了你一个行向量,如果你只是想循环遍历它,这是可以的,但如果你想hstack其他一些维度为3xN的数组,你会有

ValueError:所有输入数组的维数必须相同

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

给你一个列向量,这样你就可以做连接或hstack操作。

e.g.

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

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

>>> 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]])

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

In [4]: test.T[0]
Out[4]: array([1, 3, 5])