gpt4 book ai didi

python - Numpy 数组、幂运算符、错误的值/符号

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

当我在 Ipython 上执行以下命令时:

test = np.array([1,2,3,4])
test**50

它返回:

array([          1, -2147483648, -2147483648, -2147483648])

其值和符号均错误。有什么线索说明我为什么会得到这个吗?

最佳答案

正如评论中提到的,发生这种情况是因为整数数据类型溢出。 Numpy 使用低级 int 数据类型初始化数组,因为它适合您提供的数据。

test = np.array([1,2,3,4])
test.dtype
# dtype('int32')

test[0] = 2**31 - 1 # works
test[0] = 2**31 # OverflowError: Python int too large to convert to C long

使用 32 位有符号整数(在我的系统上),它可以保存 -2147483648 和 2147483647 之间的值。

您可以强制数组具有不同的数据类型,例如 float :

test = np.array([1, 2, 3, 4], dtype=float)
# test = np.array([1.0, 2.0, 3.0, 4.0]) # this is the same
test**50

# array([ 1.00000000e+00, 1.12589991e+15, 7.17897988e+23, 1.26765060e+30])

这是一个list of data types可以作为字符串传递给 dtype 参数。

如果您想要 Python 的大整数而不是浮点精度,这也可以(性能警告):

test = np.array([1,2,3,4], dtype=object)
test**50

# array([1, 1125899906842624, 717897987691852588770249,
# 1267650600228229401496703205376], dtype=object)

关于python - Numpy 数组、幂运算符、错误的值/符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41690524/

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