以下の内容はhttps://nishiohirokazu.hatenadiary.org/entry/20111118/1321604904より取得しました。


Numpyのndarrayは空でなくても偽になる

Pythonのリストの場合、ifの条件式に入れてboolに変換された場合は日本語で言うと「空かどうか」になる。

>>> if []: print "not empty"

>>> if [0]: print "not empty"
not empty

>>> print bool([]), bool([0])
False True

でもNumpyのndarrayはそうではない。

>>> print bool(array([])), bool(array([0]))
False False

これは、ndarrayは「1要素で中身が0の時にはゼロである」と設計されているせい。

>>> array([0]).__nonzero__()
False

Pythonのリストの挙動とは整合しないけど、まあゼロベクトルがゼロと判定されるのはアリかなぁ、などと思ったが…

>>> array([0, 0, 0]).__nonzero__()
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

えっ。




以上の内容はhttps://nishiohirokazu.hatenadiary.org/entry/20111118/1321604904より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14