当转换为numpy数组时,数组中的值会发生变化

2024-05-26 11:07:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我将数据存储在一个数据框中 我使用以下代码移动到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]

为什么会发生这种情况?我该如何阻止它


Tags: to数据numpydfnptrain数组be
2条回答

如注释中所述,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])

之所以会出现这种情况,是因为numpy提供了与熊猫相比的数值的完整表示法。您可以使用方法np.setprint_oprtions(precision=2)

相关问题 更多 >