FutureWarning使用np.full创建数组

时间:2016-12-29 12:04:06

标签: python arrays numpy warnings

我使用以下命令在python中使用numpy创建一个联系人数组。

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

确实打印了预期的数组。

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

在打印值后,我也收到了以下警告:

  

FutureWarning:将来,full((2, 2), 7)将返回dtype('int64')的数组。

有人可以解释一下这意味着什么吗?这也是重要的事情或可以忽略的(我们通常会发出警告:P)。

1 个答案:

答案 0 :(得分:3)

我不认为忽略此FutureWarning是明智的,因为直到现在创建的float数组将来会更改为int数组。请注意,您将整数7指定为填充值,但结果是浮点数组。我假设numpy-developers认为这种行为不一致,并希望将来改变行为。

如果您需要int数组,则应明确指定dtype=int

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

如果您需要float数组,只需将7更改为float7.

>>> 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)