gpt4 book ai didi

python - 关于使用 np.full 创建数组的 FutureWarning

转载 作者:太空宇宙 更新时间:2023-11-03 15:59:18 24 4
gpt4 key购买 nike

我使用以下代码在 python 中使用 numpy 创建了一个联系人数组。

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

它确实打印了预期的数组。

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

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

FutureWarning: in the future, full((2, 2), 7) will return an array of dtype('int64').

谁能解释一下这是什么意思?这也是重要的还是可以忽略的(我们通常会发出警告 :P)。

最佳答案

我认为忽略这个 FutureWarning 是不明智的因为到目前为止创建了一个 float数组将更改为 int阵列在未来。请注意,您指定了一个整数 7 作为填充值,但结果是一个 float 组。我假设 numpy-developers 认为这种行为是不一致的,并希望在未来改变这种行为。

如果你想要一个 int array 你应该明确指定 dtype=int :

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

如果你想要一个float数组,只需更改 7float : 7. :

>>> 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 即可消失.

我不推荐它,但如果您不关心它是整数数组还是 float 组并且不喜欢该警告,您可以明确禁止它:

import warnings
import numpy as np

with warnings.catch_warnings():
warnings.simplefilter('ignore', FutureWarning)
arr = np.full((2,2), 7)

关于python - 关于使用 np.full 创建数组的 FutureWarning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41379375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com