私はちょうど次の問題に遭遇しました。二つの配列から出発し、そしてなどのブール比較を行う:numpyブール値の大きい配列間の比較は、boolean配列の代わりにFalseを返します
In [47]: a1 = np.random.randint(0,10,size=1000000)
In [48]: a2 = np.random.randint(0,10,size=1000000)
In [52]: a1[:,None] == a2
Out[52]: False
はブール値の代わりに、ブールの配列を返し、一方:
In [62]: a1 = np.random.randint(0,10,size=10000)
In [63]: a2 = np.random.randint(0,10,size=10000)
In [64]: a1[:,None] == a2
Out[64]:
array([[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False],
...,
[False, False, False, ..., False, False, False],
[ True, False, False, ..., False, False, False],
[False, False, False, ..., True, False, False]], dtype=bool)
作品予想通り。これは配列のサイズに関連する問題ですか?サイズにかかわらず、配列の単一次元で簡単な比較を実行します。
In [65]: a1 = np.random.randint(0,10,size=1000000)
In [66]: a2 = np.random.randint(0,10,size=1000000)
In [67]: a1 == a2
Out[67]: array([False, False, False, ..., False, False, True], dtype=bool)
誰でも問題を再現できますか?私はNumpy 1.9.2とPython 2.7.3を使っています。
EDIT:Numpy 1.11に更新するだけで問題は解決しません。
私はpythonで再現することができます。3.4 numpy v1.10.4 –
私のコンピュータでは、python 2.7.10。、numpy 1.9.2 – acdr
と同じ動作をします。 'a1 [:] == a2'または' a1 == a2はこの不一致を表示しません。 – acdr