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
выполняет итерацию по «строкам» вашего массива и форматирует каждую с помощью 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
docs резюмирует это форматирование со ссылкой на полную Python docs.
oops - я продемонстрировал float; вы хотите целое число. int64
- максимальное целое число dtype. object
dtype может содержать python целые числа, если может быть длиннее.
====
Наибольшее число c dtype равно 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'