【问题标题】:values in the array change when turned to numpy array转换为 numpy 数组时,数组中的值会发生变化
【发布时间】:2020-01-06 14:45:10
【问题描述】:

我将数据存储在 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]

为什么会这样?以及如何阻止它

【问题讨论】:

标签: python pandas numpy


【解决方案1】:

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

【讨论】:

  • 谢谢,我试过不带 print 显示它们,你说得对
  • 我发了,但是因为我发的不多所以不会显示XD
【解决方案2】:

发生这种情况是因为 numpy 与 pandas 相比提供了数值的完整表示法。可以使用np.setprint_oprtions(precision=2)的方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    相关资源
    最近更新 更多