将NumPy数组/矢量保存为CSV



我有一些数字(大约550000),我试图将它们保存在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 = ',')

CCD_ 1是具有长度为550000的1或2的整数值的向量。

如何将这些值保存为12

您可以更改输出中数值的格式。来自手册:

fmtstr 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')

这应该做完全相同的事情,而且效率要高得多。

首先要指出的是,假设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 = ',')

但我不认为你需要numpy来做你想做的事情

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列表的一种更干净的方法。

最新更新