只获取numpy数组中每一行的特定列

mah*_*kya 16 python numpy python-2.7

可能重复:
numpy:按列访问数组

我有一个numpy数组(numpy导入为np)

gona = np.array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])
Run Code Online (Sandbox Code Playgroud)

我可以通过gona [1] [:]得到第1行整列的值.

数组([4,5,6])

但是如果我尝试获取所有行的特定列的所有值(比如我想要每行中第1列的值),我会尝试gona [:] [1].但是我得到的结果和以前一样.

这可能是什么原因?我怎么在numpy做这样的事情?

Joh*_*ard 37

你真的想这样做:

>>> a
array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])
>>> a[:,1]
array([ 2,  5,  8, 11])
Run Code Online (Sandbox Code Playgroud)

a[:]只返回整个数组,然后a[:][1]返回第二行a.我认为这就是你的困惑所在.

有关索引多维数组的更多信息,请参阅" 暂定Numpy教程"的这一部分.

  • `a [:] [1]`选择第二行 (2认同)

Mat*_*yra 7

在大括号的位置方面似乎存在轻微的混淆,gona[:][1]首先从数组中选择所有内容,然后从该数组中选择第二行.要选择特定列,请将索引放在用逗号分隔的相同方括号内:

gona = np.array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])

gona[1,:]
Out[21]: array([4, 5, 6])

gona[:,1]
Out[22]: array([ 2,  5,  8, 11])

gona[:,0]
Out[23]: array([ 1,  4,  7, 10])
Run Code Online (Sandbox Code Playgroud)

例如,您也可以选择一系列行

gona[0:2,0] # only take the two first rows of the first column
Out[24]: array([2, 5])
Run Code Online (Sandbox Code Playgroud)