【发布时间】:2011-12-07 22:10:45
【问题描述】:
numpy 中是否提供 Decimal 数据类型?
>>> import decimal, numpy
>>> d = decimal.Decimal('1.1')
>>> s = [['123.123','23'],['2323.212','123123.21312']]
>>> ss = numpy.array(s, dtype=numpy.dtype(decimal.Decimal))
>>> a = numpy.array(s, dtype=float)
>>> type(d)
<class 'decimal.Decimal'>
>>> type(ss[1,1])
<class 'str'>
>>> type(a[1,1])
<class 'numpy.float64'>
我想 numpy.array 不支持每个 dtype,但我有点认为只要定义了正确的操作,它至少会让 dtype 传播尽可能远。我错过了什么吗?有什么方法可以解决这个问题吗?
【问题讨论】:
-
在我写这篇文章的时候,下面有三个答案,都很有用。我已将其中一项标记为正确。根据您的需要,您似乎可以首先将数组“转换”为 dtype=float 然后 dtype=Decimal 并且它将正常运行。如果您需要从字符串转换为十进制,那么我认为这是需要的元素转换。
-
在阅读所有内容之前,问问自己“我是否真的需要超过 10 位数的精度?”。如果不是,float64 很好,您可以避免大多数解决方法,正如这里强调的那样,您将充分利用 numpy。