numpy.savetxt 中的哪个 fmt 选项保持无限整数精度?
Which fmt option in numpy.savetxt keeps infinite integer precision?
我一直在使用numpy.savetxt
而不指定fmt
选项,有时当一个特别大的整数应该被保存时,它被记录为一个e
符号作为某些有限精度的浮点数。
我希望所有整数,无论有多少位,都被无损记录,只包括所有数字。
但是,通读 format documentation 我不清楚哪个 fmt
选择会导致无损整数存储。
我应该使用什么合适的 fmt
设置?
In [53]: arr = np.array([1.232, 1.232423423234235352352535235253])
In [54]: arr.dtype
Out[54]: dtype('float64')
In [55]: arr
Out[55]: array([1.232 , 1.23242342])
savetxt
迭代数组的 'rows',并使用 fmt
:
格式化每个数组
In [56]: tuple(arr)
Out[56]: (1.232, 1.2324234232342353)
In [57]: '%f, %.16f'%tuple(arr)
Out[57]: '1.232000, 1.2324234232342353'
[57] 中的操作是直接 Python 格式化。 savetxt
文档总结了这种格式,link 到完整的 Python 文档。
哎呀 - 我演示了一个浮动;你想要一个整数。 int64
是最大整数数据类型。 object
dtype 可以容纳 python 个整数,但可以更长。
====
最大的数字数据类型是np.int64
:
Out[86]: array([ 1232, 1232423423234235352])
In [87]: arr.dtype
Out[87]: dtype('int64')
In [88]: '%g, %d'%tuple(arr)
Out[88]: '1232, 1232423423234235352'
较大的整数存储为 Python 整数对象。使用此类数组的数学运算速度不快,而且不完整。
In [89]: arr = np.array([1232, 1232423423234235352999])
In [90]: arr
Out[90]: array([1232, 1232423423234235352999], dtype=object)
In [91]: '%g, %d'%tuple(arr)
Out[91]: '1232, 1232423423234235352999'
使用 '%s'
或 '%r'
,它们分别对数组的元素调用 str
或 repr
。
此外,您正在阅读错误的格式字符串文档。 (它是 numpy.savetxt
文档 link 的格式字符串文档,但它仍然是错误的。) numpy.savetxt
使用老式 %
格式,记录在 here.
我一直在使用numpy.savetxt
而不指定fmt
选项,有时当一个特别大的整数应该被保存时,它被记录为一个e
符号作为某些有限精度的浮点数。
我希望所有整数,无论有多少位,都被无损记录,只包括所有数字。
但是,通读 format documentation 我不清楚哪个 fmt
选择会导致无损整数存储。
我应该使用什么合适的 fmt
设置?
In [53]: arr = np.array([1.232, 1.232423423234235352352535235253])
In [54]: arr.dtype
Out[54]: dtype('float64')
In [55]: arr
Out[55]: array([1.232 , 1.23242342])
savetxt
迭代数组的 'rows',并使用 fmt
:
In [56]: tuple(arr)
Out[56]: (1.232, 1.2324234232342353)
In [57]: '%f, %.16f'%tuple(arr)
Out[57]: '1.232000, 1.2324234232342353'
[57] 中的操作是直接 Python 格式化。 savetxt
文档总结了这种格式,link 到完整的 Python 文档。
哎呀 - 我演示了一个浮动;你想要一个整数。 int64
是最大整数数据类型。 object
dtype 可以容纳 python 个整数,但可以更长。
====
最大的数字数据类型是np.int64
:
Out[86]: array([ 1232, 1232423423234235352])
In [87]: arr.dtype
Out[87]: dtype('int64')
In [88]: '%g, %d'%tuple(arr)
Out[88]: '1232, 1232423423234235352'
较大的整数存储为 Python 整数对象。使用此类数组的数学运算速度不快,而且不完整。
In [89]: arr = np.array([1232, 1232423423234235352999])
In [90]: arr
Out[90]: array([1232, 1232423423234235352999], dtype=object)
In [91]: '%g, %d'%tuple(arr)
Out[91]: '1232, 1232423423234235352999'
使用 '%s'
或 '%r'
,它们分别对数组的元素调用 str
或 repr
。
此外,您正在阅读错误的格式字符串文档。 (它是 numpy.savetxt
文档 link 的格式字符串文档,但它仍然是错误的。) numpy.savetxt
使用老式 %
格式,记录在 here.