繁体   English   中英

在 pandas.to_numeric 中向下转换为 float16

[英]Downcast to float16 in pandas.to_numeric

我想知道为什么pd.to_numeric方法不能向下转换为np.float16 代码说:

# pandas support goes only to np.float32,
# as float dtypes smaller than that are
# extremely rare and not well supported

代码链接: https : //github.com/pandas-dev/pandas/blob/baa77c33fb71c29acea21ba06adaf426ed4cb561/pandas/core/tools/numeric.py#L164

极其稀有? 我有很多 DataFrame 的值完全适合np.float16数组。 没有很好的支持? 你能提供更多细节吗?

谢谢!!

很多数据可以按照您的精确度放入np.float16类型中,但是当您使用这些数字进行计算时通常会出现问题。 正如 unutbu 所说:

使用 float16s 时,算术错误累积得非常快: np.array([0.1,0.2], dtype='float16').sum() 等于(大约)0.2998。 尤其是当计算需要数千次算术运算时,对于许多应用程序来说,这可能是不可接受的错误量。

即使忽略错误,您也可以找到与数据大小相关的各种问题。 当使用np.float16无法物理处理的极小和极大值时,会出现naninfinity问题。 这限制了它对不太可能在现实世界场景中使用的特定计算的有用性。 可表示的最大值实际上只有 65504。而且随着我们的计算机可用的更大存储和处理能力,我们真的没有必要再限制自己了。 所以熊猫人只是决定不允许pd.to_numeric使用它,因为它确实没有太多用途,但有很多缺点。 许多软件甚至不支持这种类型,因为它不常用,这就是它们不被很好支持的意思。

当然,您np.float16出大量可以适合np.float16格式的示例,但也有很多无法使用的示例。 这并不是说没有应用程序的数字大小越小越好。 但是这些应用程序可能不会使用熊猫。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM