我想将一堆存储在 np 数组中的客户数据写入 csv 文件。首先,我想附加一个客户 ID 和部门名称,然后我想将记录作为一行添加到 csv,最终结果如下所示:
0,a,0.5,0.1,0.7,0.9,1.2
1,a,0.6,0.8,0.7,1.9,1.2
2,a,0.8,1.1,1.7,1.9,0.2
3,a,0.5,0.8,1.7,1.3,1.2
.....
等。。。。。
我正在使用一个看起来像这样的循环:
import numpy as np
ID = 0
Dept = 'a'
with open('test_file.csv', 'w') as train_file:
for _ in range(10):
noise = np.random.normal(0, 0.5, 20)
noise = np.append([ID,Dept],noise)
np.savetxt(train_file, noise,fmt='%s',delimiter=",")
ID +=1
但它给出了一个奇怪的输出,只有第一行被写入文件并在一列而不是一行中:
0
a
0.13413237923120783
-0.35992427454477954
0.0438584146450925
0.3692908225112282
0.5815011967140531
0.9963752057887987
0.1648769579313785
-0.7986834355365774
0.0547352924307264
我该如何解决这个问题?
一种方法是将数组重塑为 (1, N( 的维度,如下所示:
np.savetxt(train_file, noise.reshape(1,noise.shape[0]), fmt='%s', delimiter=",")
直接编写 csv 文件的示例:
In [10]: ID=0
...: with open('test.csv','w') as f:
...: fmt = '%2s, %2s, '+', '.join(['%5.2f']*6) + 'n'
...: for _ in range(5):
...: x = np.random.normal(0, 0.5, 6)
...: astr = fmt%(ID, Dept, *x)
...: f.write(astr)
...: ID += 1
...:
In [11]: cat test.csv
0, a, -0.22, 0.77, 0.32, -0.05, 0.11, 0.36
1, a, -0.21, -0.38, 0.68, 0.68, -0.09, 0.47
2, a, -0.33, 0.67, 0.64, -0.24, 0.01, 0.91
3, a, -0.28, 0.17, -0.06, 0.83, -0.68, 0.43
4, a, -0.73, -0.23, 0.28, -0.70, -0.04, -0.33