Ваши данные как структурированные dtype:
In [166]: txt = """at,price
...: 1587690840,15.25
...: 1587690900,15.24
...: 1587690960,15.23"""
In [167]: data = np.genfromtxt(txt.splitlines(), delimiter=',', names=True, dtype=None, encoding=None)
In [168]: data
Out[168]:
array([(1587690840, 15.25), (1587690900, 15.24), (1587690960, 15.23)],
dtype=[('at', '<i8'), ('price', '<f8')])
Имеет одно поле типа int и одно поле с плавающей точкой.
То же самое, что и число с плавающей точкой
In [170]: data = np.genfromtxt(txt.splitlines(), delimiter=',', skip_header=1, encoding=None)
In [171]: data
Out[171]:
array([[1.58769084e+09, 1.52500000e+01],
[1.58769090e+09, 1.52400000e+01],
[1.58769096e+09, 1.52300000e+01]])
Я не очень много работал set_printoptions
, но похоже, что suppress=True
не имеет эффекта с помощью float (1.58e9). Два столбца, отображаемые отдельно:
In [176]: data[:,0]
Out[176]: array([1.58769084e+09, 1.58769090e+09, 1.58769096e+09])
In [177]: data[:,1]
Out[177]: array([15.25, 15.24, 15.23])
и большие числа с плавающей точкой, преобразованные в int:
In [178]: data[:,0].astype(int)
Out[178]: array([1587690840, 1587690900, 1587690960])
Что производит pd.read_csv
?
In [189]: pd.DataFrame(data, dtype=None)
Out[189]:
0 1
0 1.587691e+09 15.25
1 1.587691e+09 15.24
2 1.587691e+09 15.23
In [190]: pd.DataFrame(Out[168], dtype=None)
Out[190]:
at price
0 1587690840 15.25
1 1587690900 15.24
2 1587690960 15.23
Преобразование кадр данных обратно в массив:
In [191]: Out[190].to_numpy()
Out[191]:
array([[1.58769084e+09, 1.52500000e+01],
[1.58769090e+09, 1.52400000e+01],
[1.58769096e+09, 1.52300000e+01]])
In [193]: Out[190].to_records(index=False)
Out[193]:
rec.array([(1587690840, 15.25), (1587690900, 15.24), (1587690960, 15.23)],
dtype=[('at', '<i8'), ('price', '<f8')])
suppress
действительно действует, если самые большие числа меньше:
In [201]: with np.printoptions(suppress=True):
...: print(data/[100,1])
...:
[[15876908.4 15.25]
[15876909. 15.24]
[15876909.6 15.23]]