Python 如何使用函数';其中';生成这个数组?

Python 如何使用函数';其中';生成这个数组?,python,numpy,Python,Numpy,x>5的确切含义是什么?结果数组似乎很神秘。它是一个具有行和列索引的元组x>5返回与x形状相同的布尔数组,其中元素设置为True,条件满足,否则设置为False。根据np.where将在没有其他参数的情况下回退。对于给定的示例,大于5的所有元素恰好位于行2中,并且所有列都满足该条件,因此[2,2,2](行),[0,1,2](列)。请注意,您可以使用此结果为原始数组编制索引: >>> x = np.arange(9.).reshape(3, 3) >>> np.

x>5
的确切含义是什么?结果数组似乎很神秘。

它是一个具有行和列索引的元组
x>5
返回与
x
形状相同的布尔数组,其中元素设置为
True
,条件满足,否则设置为
False
。根据
np.where
将在没有其他参数的情况下回退。对于给定的示例,大于5的所有元素恰好位于行
2
中,并且所有列都满足该条件,因此
[2,2,2](行),[0,1,2](列)
。请注意,您可以使用此结果为原始数组编制索引:

>>> x = np.arange(9.).reshape(3, 3)
>>> np.where( x > 5 )
(array([2, 2, 2]), array([0, 1, 2]))

通常的语法是
np.where(条件,res\u if\u true,res\u if\u false)
。只有第一个参数,这是一个特例:

当只提供条件时,此函数是
np.asarray(条件).nonzero()

因此,首先计算
x>5

>>> x[np.where(x > 5)]
[6 7 8]
由于它已经是一个数组,请计算
arr.nonzero()

这将返回非零元素的索引。元组的第一个元素表示轴=0的坐标,第二个元素表示轴=1的坐标,即第二行和最后一行中的所有值都大于5

arr = x > 5
print(arr)
# array([[False, False, False],
#        [False, False, False],
#        [ True,  True,  True]])
print(arr.nonzero())
# (array([2, 2, 2], dtype=int64), array([0, 1, 2], dtype=int64))