2016-12-29 8 views
2

次のようにnumpyを使ってPythonで連絡先配列を作成しました。FutureWarningを使ってnp.fullを使って配列を作成する

import numpy as np 
a = np.full((2,2), 7) 
print(a) 

予想される配列が印刷されました。

[[ 7. 7.] 
[ 7. 7.]] 

値が印刷された後、私はまた、次の警告を得た:

FutureWarning:将来的には、full((2, 2), 7)dtype('int64')の配列を返しますが。

誰かがこの意味を説明してください。また、これは重要なものであるか無視することができます(私たちは一般的に警告:P)。

答えて

2

これまで無視されていたのは、今までfloatの配列がintの配列に変更されているためです。これを無視するのは、このFutureWarningを無視するとは限りません。塗りつぶし値として整数7を指定しましたが、結果は浮動小数点型配列でした。 numpy-developersは、この動作が矛盾していると考え、今後の動作を変更したいと考えています。

あなたがint配列をしたい場合は、明示的dtype=intを指定する必要があります。

>>> np.full((2, 2), 7, dtype=int) 
array([[7, 7], 
     [7, 7]]) 

あなたがfloat配列をしたい場合は、単にfloat7を変更:7.

>>> np.full((2, 2), 7.) 
array([[ 7., 7.], 
     [ 7., 7.]]) 

ことも可能です明示的にdtypeを指定するdtype=float

>>> np.full((2,2), 7, dtype=float) 
array([[ 7., 7.], 
     [ 7., 7.]]) 

FutureWarningは、すべてFutureWarningを明示的に無視する必要がなくなります。

私はそれをお勧めしませんが、それは、整数または浮動小数点配列の場合は気にしない場合は、その警告のように明示的にそれを抑制することができません。

import warnings 
import numpy as np 

with warnings.catch_warnings(): 
    warnings.simplefilter('ignore', FutureWarning) 
    arr = np.full((2,2), 7) 
関連する問題