我想知道为什么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
非常稀有?我有很多DataFrame,它们的值完全适合np.float16
数组。
没有很好的支持?您能提供更多细节吗?
谢谢!
答案 0 :(得分:0)
您可以精确地将许多数据放入np.float16
类型中,但是当您使用这些数字进行计算时通常会出现问题。正如unutbu所说:
float16s会很快累积算术错误:np.array([0.1,0.2],dtype ='float16')。sum()等于(大约)0.2998。尤其是当计算需要数千次算术运算时,对于许多应用程序来说,这可能是不可接受的错误量。
您甚至可以忽略与错误有关的各种数据大小问题。当使用nan
仅无法物理处理的极小值和极大值时,会出现infinity
和np.float16
问题。这将其用处限制在特定的计算上,而这些计算在现实世界中不太可能使用。最大可表示值实际上只有65504。随着我们计算机拥有的更大的存储和处理能力,实际上不再需要限制自己了。因此,熊猫人刚决定不允许在pd.to_numeric
中使用它,因为在存在很多缺点的同时,它的用途并不多。许多软件甚至都不支持这种类型,因为它不常用,这就是它们没有得到很好支持的意思。
当然,您可以想出大量适合np.float16
格式的示例,但也有很多很多不适合的示例。这并不是说没有应用程序中较小的数字更好。但是这些应用程序可能不会使用熊猫。