仅获取numpy数组中每一行的特定列[重复]

Posted

技术标签:

【中文标题】仅获取numpy数组中每一行的特定列[重复]【英文标题】:Getting only particular columns in every row in a numpy array [duplicate] 【发布时间】:2013-01-17 00:26:26 【问题描述】:

可能重复:numpy: access an array by column

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

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

我可以通过 gona[1][:] 获取第一行整列的值。

数组([4, 5, 6])

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

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

【问题讨论】:

没有。我想知道为什么这两种方法也会给出相同的结果 【参考方案1】:

像这样:

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

# List comprehension, just get each element in 'gona', and then get first element in that list
out = [x[0] for x in gona]

print out

输出:

>>> 
[1, 4, 7, 10]
>>> 

【讨论】:

【参考方案2】:

你实际上想要这样做:

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

a[:] 只返回整个数组,所以a[:][1] 返回a 的第二行。我认为这就是您产生困惑的地方。

有关索引多维数组的更多信息,请参阅Tentative Numpy Tutorial 的this 部分。

【讨论】:

a[:][1] 选择第二行 糟糕。你说得对。我已经更正了。 这完成了工作。谢谢 逗号是什么意思? 逗号是轴分隔符,所以在本例中,我选择沿第一个轴的所有元素,仅沿第二个轴选择第二个元素。【参考方案3】:

在大括号的位置方面似乎有点混乱,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])

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

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

【讨论】:

另外感谢您选择一系列行代码:)

以上是关于仅获取numpy数组中每一行的特定列[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何从熊猫框架中的特定列中提取numpy数组并将它们堆叠为单个numpy数组[重复]

用于获取表的所有条目并且仅包含基于特定列的许多重复项中的第一个的自定义查询

改组数组中每一行的非零元素 - Python / NumPy

如何使用Python计算数组特定行中的值[重复]

从 BigQuery 中的重复嵌套列中获取参数数组

仅包含特定单词的过滤器数组[重复]