次のオブジェクトの配列を使用します。
a = np.array([[1], [1, 2], [1, 2, 3], [1], [1]], dtype=object)
b = np.array([(1,), (1, 2), (1, 2, 3), (1,), (1,)], dtype=object)
次の等価チェックは機能しません。
a==[1]
#array([False, False, False, False, False], dtype=bool)
b==(1,)
#array([False, False, False, False, False], dtype=bool)
代わりに文字列を使用する場合:
c = np.array(['[1]', '[1, 2]', '[1, 2, 3]', '[1]', '[1]'])
等価チェックは機能します:
c == '[1]'
#array([ True, False, False, True, True], dtype=bool)
配列チェックがそのように動作するのはなぜですか?
a または b を反復してチェックを実行すると、期待される結果も得られます。
[i==[1] for i in a]
#[True, False, False, True, True]
[i==(1,) for i in b]
#[True, False, False, True, True]
ありがとうございました!