我正在使用JetBrains Pycharm(Windows操作系统)进行python编码。在我的代码中,我使用pd.read_csv(dataset)读取了一个csv文件。然后对某些表列进行少量审核,最后要查看更新后的表,因此最后输入命令-> print(数据集)。
现在,将修改后的数据集打印在底部窗口中时,数据集的所有元素都以浮点指数格式打印。
例如
[ 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.65349200e+05
1.36897800e+05 4.71784100e+05]
这是我需要帮助的地方。我需要以浮点十进制格式或简单十进制格式打印数据集。
如何以最简单的方式实现? 另外,Pycharm中是否有任何选项可以从任何设置/配置窗口配置输出格式(指数,十进制等),而不是硬编码?
答案 0 :(得分:1)
使用{n}。格式()
例如:'{:n}'。format(1234))
ds_x=[ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00,1.65349200e+05, 1.36897800e+05, 4.71784100e+05]
# For Numpy arrays use '.astype'
# Copy of the array 'ds_x', cast to a specified type 'float'.
# Note: Try type 'float32' OR 'float64' if the below fails to provide correct precision.
data_set = ds_x.astype(float)
for i in data_set:
print("{:.16f}".format(float(i)))
#可以找到更多有关精度更高的信息here
输出:
0.0000000000000000
0.0000000000000000
1.0000000000000000
165349.2000000000116415
136897.7999999999883585
471784.0999999999767169
或者您可以使用其他方式:
"%.16f" % (float( 00,1.65349200e+05))
关于PyCharm的第二个问题。您可能需要研究formatting markers。有关reformatting的完整详细信息。
更新:
这是您提供的数据集的更新代码示例。
import numpy as np
ds = np.array([[ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 2.86637600e+04, 1.27056210e+05, 2.01126820e+05],
[ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00, 1.44372410e+05, 1.18671850e+05, 3.83199620e+05]])
for data_x in iter(ds):
print()
for data_y in data_x:
print("%.16f" % float(data_y))
输出:
0.0000000000000000
1.0000000000000000
0.0000000000000000
28663.7599999999983993
127056.2100000000064028
201126.8200000000069849
0.0000000000000000
0.0000000000000000
1.0000000000000000
144372.4100000000034925
118671.8500000000058208
383199.6199999999953434
关于错误:
TypeError:只有大小为1的数组可以转换为Python标量
这是因为您使用的数据集是Python矩阵或一个列表/两个数组的列表。这篇文章中的第一个代码示例使用一个循环,该循环可用于一个数组。但是,由于在第一个循环上使用的是包含两个数组的较大数据集,因此它将传递整个数组,从而导致上述错误输出。为了解决这个问题,我只添加了第二个循环来遍历每个数组的每个值。