我使用以下命令在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)。
答案 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
更改为float
: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)