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