значения в массиве изменяются при обращении к массиву numpy - PullRequest
0 голосов
/ 06 января 2020

У меня есть данные, сохраненные в pandas DataFrame, который я перемещаю в массив numpy, используя следующий код

# used to be train_X = np.array(train_df.iloc[1:,3:].values.tolist())
# but was split for me to find he source of change  
pylist = train_df.iloc[1:,3:].values.tolist()
print(pylist[0])
train_X = np.array(pylist)
print(train_X[0])

, когда возвращается первая печать:

[0.0, 0.0, 0.0, 0.0, 1.0, 504.0, 0.0, 2.0, 8.0, 0.0, 0.0, 0.0, 0.0, 2.0, 8.0, 0.0, 189.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 85143.0, 57219.0, 62511.267857142804, 2649.26669430866]

Второй вывод после того, как я переместил его в массив Numpy, возвращает это

[0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00
 1.00000000e+00 5.04000000e+02 0.00000000e+00 2.00000000e+00
 8.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00
 0.00000000e+00 2.00000000e+00 8.00000000e+00 0.00000000e+00
 1.89000000e+02 0.00000000e+00 0.00000000e+00 0.00000000e+00
 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00
 0.00000000e+00 0.00000000e+00 8.51430000e+04 5.72190000e+04
 6.25112679e+04 2.64926669e+03]

Почему это происходит? и как мне это остановить

Ответы [ 2 ]

0 голосов
/ 06 января 2020

Как упоминалось в комментариях, NumPy представляет данные в экспоненциальной записи. Если вы хотите изменить способ печати, вы можете сделать:

import numpy as np

np.set_printoptions(precision=2)
pylist = train_df.iloc[1:,3:].values.tolist()
print(pylist[0])
train_X = np.array(pylist)
print(train_X[0])
0 голосов
/ 06 января 2020

Это происходит потому, что numpy обеспечивает полное обозначение числового значения c по сравнению с pandas. Вы можете использовать метод np.setprint_oprtions(precision=2)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...