我无法评论拥有一个单独的便利函数来转换另一个结果的有用性,但我可以评论where
vs nonzero
。在它最简单的用例中,where
确实与nonzero
.
>>> np.where(np.array([[0,4],[4,0]]))
(array([0, 1]), array([1, 0]))
>>> np.nonzero(np.array([[0,4],[4,0]]))
(array([0, 1]), array([1, 0]))
或者
>>> a = np.array([[1, 2],[3, 4]])
>>> np.where(a == 3)
(array([1, 0]),)
>>> np.nonzero(a == 3)
(array([1, 0]),)
where
nonzero
与您希望从数组中选择元素(a
如果某个条件是)True
和从数组中选择元素的b
情况不同False
。
>>> a = np.array([[6, 4],[0, -3]])
>>> b = np.array([[100, 200], [300, 400]])
>>> np.where(a > 0, a, b)
array([[6, 4], [300, 400]])
同样,我无法解释为什么他们将nonzero
功能添加到where
,但这至少解释了两者的不同之处。
编辑:修正了第一个例子......我的逻辑以前不正确