2016-04-07 27 views
10

私はちょうど次の問題に遭遇しました。二つの配列から出発し、そしてなどのブール比較を行う: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に更新するだけで問題は解決しません。

+0

私はpythonで再現することができます。3.4 numpy v1.10.4 –

+0

私のコンピュータでは、python 2.7.10。、numpy 1.9.2 – acdr

+0

と同じ動作をします。 'a1 [:] == a2'または' a1 == a2はこの不一致を表示しません。 – acdr

答えて

8

私は比較をしようとすると、私は警告を受ける:この警告は、numpyののコードhereにトリガされ

[...]/__main__.py:1: DeprecationWarning: elementwise == comparison failed; 
this will raise an error in the future. 
    if __name__ == '__main__': 

if (result == NULL) { 
    /* 
    * Comparisons should raise errors when element-wise comparison 
    * is not possible. 
    */ 
    /* 2015-05-14, 1.10 */ 
    PyErr_Clear(); 
    if (DEPRECATE("elementwise == comparison failed; " 
        "this will raise an error in the future.") < 0) { 
     return NULL; 
    } 

resultは何が起こったのかresult == NULLを、ここであるため、この枝に到達しましたNumPy が要求された操作を行うためにを試したとき(2つの配列のブロードキャストを含む要素単位の等価チェック)。

なぜこの操作が失敗し、NULLを返しましたか? NumPyが巨大なのメモリのチャンクを割り当てる必要があったためです。ブール値を保持するのに十分である。これは約931 GBです:これを行うことができず、代わりにNULLを返しました。

関連する問題