避免科学计数法将NumPy数组保存为CSV文件

21
我能够计算A的平均值、最小值和最大值。
 import numpy as np

 A = ['33.33', '33.33', '33.33', '33.37']

 NA = np.asarray(A)
 NA = NA.astype(float)
 AVG = np.mean(NA, axis=0)
 MN = np.min(NA, axis=0)
 MX = np.max(NA, axis=0)

 print AVG, MN, MX

使用Python最简单的方法将这些结果保存到CSV文件中是什么?我没有csv文件,所以需要创建一个。

如果我使用以下代码:

 np.savetxt('datasave.csv', (AVG,MN,MX), delimiter=',')

在csv中它会显示为科学计数法。我该如何将其显示为浮点数?


2
使用csv模块,特别是csv.writer。 - cco
你尝试过使用 savetxtfmr 参数吗? - hpaulj
3个回答

36
In [153]: print(AVG, MN, MX)
33.34 33.33 33.37

默认写入:

In [154]: np.savetxt('test.txt',(AVG, MN, MX), delimiter=',')
In [155]: cat test.txt
3.333999999999999631e+01
3.332999999999999829e+01
3.336999999999999744e+01

使用自定义的fmt进行编写:

In [156]: np.savetxt('test.txt',(AVG, MN, MX), delimiter=',', fmt='%f')
In [157]: cat test.txt
33.340000
33.330000
33.370000

如果您希望将值放在一行上,请将其制作为二维数组(或使用额外的[]等效方式),以便每行写入一行:

In [160]: np.savetxt('test.txt',[[AVG, MN, MX]], delimiter=',', fmt='%f')
In [161]: cat test.txt
33.340000,33.330000,33.370000

还有其他参数可以进行实验。


2
您可以使用CSV模块。
import csv
f = open('New file.csv',"wb")
writer = csv.writer(f)
for row in [AVG, MN, MX]:
    writer.writerow(row)

f.close()

谢谢,但是出于某种原因,使用这种方法时文件被创建了,但里面没有东西。有什么想法吗? - Cristian J Estrada

-5

CSV或逗号分隔值文件就是用逗号分隔信息的文件。

For example: this info will end up like

<table border="1">
<thead>
<tr>
<th>Name</th>
<th>Age</th>
<th>Gender</th>
</tr>
</thead>
<tbody>
<tr>
<td>Luis</td>
<td>45</td>
<td>M</td>
</tr>
<tr>
<td>Anna</td>
<td>30</td>
<td>F</td>
</tr>
<tr>
<td>Brian</td>
<td>28</td>
<td>M</td>
</tr>
</tbody>
</table>

Name,Age,Gender
Luis,45,M
Anna,30,F
Brian,28,M

Python已经有一个内置模块来处理这个问题,即csv模块,您可以在此处获取一些文档:https://docs.python.org/3/library/csv.html


1
HTML真的必要吗?问题是如何避免科学计数法。 - OneCricketeer
1
这个答案与问题没有任何价值。它只展示了一个HTML表格如何被转换成CSV,但是没有人提出这个需求。 - Nicolaesse

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接