使用np.full创建数组时出现FutureWarning警告

3
我使用以下代码在Python中使用NumPy创建联系人数组。
import numpy as np
a = np.full((2,2), 7) 
print(a) 

它确实打印了预期的数组。
[[ 7.  7.]
 [ 7.  7.]]

我在输出值后也得到了以下警告:
未来的警告:在未来,`full((2, 2), 7)`将返回一个`dtype('int64')`数组。
请问有人能解释一下这是什么意思吗?这个警告很重要吗?还是可以忽略它(我们通常对警告不予理睬:P)。
1个回答

3
我认为忽略这个 FutureWarning 是不明智的,因为到目前为止创建的 float 数组将在未来变为 int 数组。请注意,您指定了整数 7 作为填充值,但结果是浮点数数组。我假设 numpy 开发人员认为这种行为是不一致的,并希望在未来更改此行为。
如果您想要一个 int 数组,应显式指定 dtype=int
>>> np.full((2, 2), 7, dtype=int)
array([[7, 7],
       [7, 7]])

如果你想要一个浮点数数组,只需将“7”更改为“float”类型:“7.0”。
>>> np.full((2, 2), 7.)
array([[ 7.,  7.],
       [ 7.,  7.]])

您也可以明确指定数据类型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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接