>>> x = np.arange(9.).reshape(3, 3)
>>> np.where( x > 5 )
(array([2, 2, 2]), array([0, 1, 2]))
x>5
的确切含义是什么?结果数组似乎很神秘。
答案 0 :(得分:1)
这是具有行和列索引的元组。 x > 5
返回形状与x
相同的布尔数组,其元素设置为True
,其中满足条件,而False
则满足。根据{{3}},np.where
在没有其他参数的情况下将在the documentation上进行回退。对于您给定的示例,大于5的所有元素碰巧都位于行2
中,并且所有列均满足条件,因此[2, 2, 2] (rows), [0, 1, 2] (columns)
。请注意,可以使用这个结果以指数的原始数组:
>>> x[np.where(x > 5)]
[6 7 8]
答案 1 :(得分:0)
通常的语法是np.where(condition, res_if_true, res_if_false)
。由于只有第一个参数,这是一种特殊情况described in the docs:
仅提供条件时,此功能是
np.asarray(condition).nonzero()
。
因此,首先计算x > 5
:
arr = x > 5
print(arr)
# array([[False, False, False],
# [False, False, False],
# [ True, True, True]])
由于它已经阵列,计算arr.nonzero()
:
print(arr.nonzero())
# (array([2, 2, 2], dtype=int64), array([0, 1, 2], dtype=int64))
这将返回非零元素的索引。元组的第一个元素代表axis=0
的坐标,第二个元素axis=1
的坐标,即第二行和最后一行中的所有值均大于5。