numpy.where条件以选择2D数组中的特定垂直列

时间:2018-10-09 21:57:07

标签: python arrays numpy

说我们有

a = numpy.arange(25).reshape(5,5)

> array([[ 0,  1,  2,  3,  4],
         [ 5,  6,  7,  8,  9],
         [10, 11, 12, 13, 14],
         [15, 16, 17, 18, 19],
         [20, 21, 22, 23, 24]])

继续前进

numpy.where(a[1])

> array([0, 1, 2, 3, 4])

然后类似

a[1][numpy.where(a[1])]

> array([5, 6, 7, 8, 9])

我可以选择数组的水平行和相应的值,但是如何在类似的条件下仅选择特定的垂直列

即。

numpy.where(condition)

> array([1, 6, 11, 16, 21]) 

2 个答案:

答案 0 :(得分:1)

我不确定这是否是您的意思,但是您可以使用[:,column_number]为列编制索引,其中:代表“所有行”:

a[:,1][numpy.where(a[1])]

# array([ 1,  6, 11, 16, 21])

但是,以上内容仅相当于a[:,1]

>>> a[:,1]
array([ 1,  6, 11, 16, 21])

答案 1 :(得分:1)

请看一下本教程,以了解如何在numpy数组(https://docs.scipy.org/doc/numpy-1.15.1/reference/arrays.indexing.html)上应用切片。至于您的问题,答案是:

a[:,1]