8

0変数が存在するかどうかをテストしたい状況が時々ありますNone。純粋なPythonでは、これは単純です

foo == True

しかし、fooが Numpy オブジェクト ( などnumpy.ndarray) である可能性がある場合、これは機能しなくなり、エラーが発生します。

ValueError: The truth value of an array with more than one element is ambiguous. 
 Use a.any() or a.all()

この場合は が必要ですa.any()が、これは反復不可能なオブジェクトでは失敗します。

もちろん、foois0か かどうかを明示的に確認できNoneますが、これを行うためのよりエレガントな方法があるかどうか疑問に思っています。

任意のオブジェクト (反復可能かどうかの両方) がそうであるかどうかを確認するにはどうすればよいTrueですか?

4

2 に答える 2

2

メソッドの代わりにnp.allorを使用するだけです。まだ配列でない場合は、配列を作成します。np.any.allnp.all

于 2012-10-19T12:09:04.463 に答える
1

私が使用するレシピは、try except ブロックに変数が存在すると仮定してステートメントを囲むことです。

try:
    do_something(foo)
except NameError:
    foo = something
于 2012-10-19T12:07:24.757 に答える