python - 从 float32 到 float16 的 numpy astype

标签 python numpy floating-point

我想知道 numpy 如何从 float32 转换为 float16,因为当我使用 astype 将一些数字(如 8193)从 float32 转换为 float16 时,它将输出 8192,而将 10000 个 float32 转换为 10000 个 float16。

import numpy as np
a = np.array([8193], dtype=np.float32)
b = a.astype(np.float16)

最佳答案

IEEE 754-2008 16 位 base 2 格式,又名 binary16,不能提供很高的精度。您对 16 位有什么期望? :) 1 位是符号位,5 位用于指数,剩下 10 位用于存储归一化的 11 位尾数,因此任何 > 2**11 == 2048 都必须量化。

根据 Wikipedia , 4097 到 8192 之间的整数四舍五入到 4 的倍数,8193 到 16384 之间的整数四舍五入到 8 的倍数。

关于python - 从 float32 到 float16 的 numpy astype,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46705778/

相关文章:

python - Azure 事件中心 python 中 SAS token 的连接字符串

python - 是否可以在 matplotlib 中添加一个字符串作为图例项

python - 计算特定跨度的 pandas 数据框中的累积和

python - Numpy 将列表附加到数组而不合并它们

c# - C# 如何*确切地*将 double 转换为十进制?

c++ - 使用向上(或向下)舍入将 long double 转换为 double

python - 最小的、独立的、可分发的、跨平台的网络服务器

python - 将 R 值(相关性)添加到 Altair 中的散点图

python - 遍历 numpy 数组有效地测试多个元素

python - float 在 Python 中的取值范围是多少?