別の結果を転置する別の便利な関数を持つことの有用性についてはコメントできませんが、wherevsについてはコメントでき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ある場合に配列から要素を取り出したい場合と、その条件が である場合に配列から要素を取り出したい場合とは異なります。aTruebFalse
>>> 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が、これは少なくとも 2 つの違いを説明しています。
編集:最初の例を修正しました...私のロジックは以前は間違っていました