我有一些数字(约550,000),我试图将它们保存在CSV文件中。我的值只能是1或2.但它保存为:
['2.000000000000000000e+00']
['1.000000000000000000e+00']
['2.000000000000000000e+00']
['2.000000000000000000e+00']
...
我的代码是:
import numpy as np
def save_in_scv_format(My_Labels):
K = []
for i in range(len(My_Labels)):
K.append(My_Labels[i])
np.savetxt('My_labels.csv', K, delimiter = ',')
My_labels
是一个整数值为1或2且长度为550,000的向量。
如何将这些值保存为1
或2
?
答案 0 :(得分:1)
您可以更改输出中数值的格式。来自manual:
fmt :
str or sequence of strs, optional
A single format (%10.5f), a sequence of formats, or a multi-format string, e.g. ‘Iteration %d – %10.5f’, in which case delimiter is ignored.
所以试试:
np.savetxt('My_labels.csv', K, delimiter = ',', fmt='%d')
但是,此代码还存在其他问题。
import numpy as np
def save_in_csv_format(My_Labels):
np.savetxt('My_labels.csv', My_Labels, delimiter = ',', fmt='%d')
这应该完全相同,并且效率更高。
答案 1 :(得分:0)
首先要指出的是,假设My_Labels
是您建议的列表,您的代码的指定部分是多余的:
def save_in_scv_format(My_Labels):
import numpy as np
K = [] # <--
for i in range(len(My_Labels)): # <--
K.append(My_Labels[i]) # <--
np.savetxt('My_labels.csv', K, delimiter = ',')
你也可以写作:
def save_in_scv_format(My_Labels):
import numpy as np
np.savetxt('My_labels.csv', My_Labels, delimiter = ',')
但我认为你不需要做你想做的事情。类似的东西:
def save_in_scv_format(My_Labels):
with open('My_labels.csv', 'w') as f:
f.write(','.join(My_Labels))
可能会有效,而且更好。
或者,您可以执行以下操作:
def save_in_scv_format(My_Labels):
with open('My_labels.csv', 'w') as f:
f.write(str(My_Labels))
将保留封闭的方括号,并在整数之间添加空格。
您可以查看csv和pickle模块,以便将列表输出到文件中。
n.b。如果我误解了,例如My_Labels
是一个numpy数组,那么就像:
my_array = My_Labels.tolist()
(docs)是一种创建python列表的更简洁方法。