numpy.where(),条件为2d数组和1d数组

时间:2016-01-08 00:12:57

标签: python arrays numpy matrix

鉴于以下2d numpy数组:

>>> a = np.arange(4,10).reshape(2,3)
array([[4, 5, 6],
       [7, 8, 9]])

我们可以使用np.where()来获取满足特定条件的条目索引。

>>> np.where(a == [4, 5, 6])
(array([0, 0, 0]), array([0, 1, 2])) 

到目前为止一切顺利:要返回的第一个数组是整数456出现在a中的行idx&#39},第二个数组是4,5,6出现在a中的字母。

>>> np.where(a == [4,5,8])
(array([0, 0]), array([0, 1])) 

为什么整数8没有被选中?

>>> np.where(a == [6,8,9])       
(array([1, 1]), array([1, 2])) 

为什么整数6没有被选中?

>>> np.where(a == [4,8,9])
(array([0, 1, 1]), array([0, 1, 2])) 

为什么整数4 被拾取?

1 个答案:

答案 0 :(得分:0)

感谢jonrsharpe在我的问题下面的评论,我能够理解发生了什么。

>>> > a = np.arange(5,10)
>>> a == [4,8,9]
array([[True, False, False],
       [False,  True,  True]], dtype=bool)

获取[4,8,9]并为a的每个3数组条目逐元素地评估它们是否相等。

>>> np.where(a == [4,8,9])
(array([0, 1, 1]), array([0, 1, 2])) 

给出True出现的行和列索引。