英文:
values in the array change when turned to numpy array
问题
这种情况发生是因为在NumPy数组的默认输出格式中,数字以科学计数法显示。要停止这种情况,你可以使用NumPy的set_printoptions函数来更改打印选项,将科学计数法关闭。以下是如何做到这一点的示例代码:
import numpy as np
# 设置NumPy打印选项,关闭科学计数法
np.set_printoptions(suppress=True)
# 将数据从pandas DataFrame移动到NumPy数组
pylist = train_df.iloc[1:, 3:].values.tolist()
train_X = np.array(pylist)
# 打印NumPy数组
print(train_X[0])
这将关闭科学计数法,使你的NumPy数组以普通的浮点数形式打印出来,就像你的第一个打印结果一样。
英文:
I have data stored in a pandas DataFrame
that I move to a numpy array using the following code
# 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])
the first print returns :
[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]
the second print after the I move it to a Numpy array returns this
[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]
why does this happen ? and how do I stop it
答案1
得分: 1
如评论中所述,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])
英文:
As mentioned in the comments, NumPy represents the data to exponential notation. If you would like to change the way it's printed, you can do:
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])
答案2
得分: 0
这是因为 numpy
提供了与 pandas 相比的数值值的完整表示。您可以使用方法 np.set_print_options(precision=2)
。
英文:
This happens because numpy
provides the full notation of a numeric value as compared to pandas. You can use the method np.setprint_oprtions(precision=2)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论