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))