将NumPy数组/向量保存为CSV

时间:2016-07-20 08:12:17

标签: python csv

我有一些数字(约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的向量。

如何将这些值保存为12

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

将保留封闭的方括号,并在整数之间添加空格。

您可以查看csvpickle模块,以便将列表输出到文件中。

n.b。如果我误解了,例如My_Labels是一个numpy数组,那么就像:

my_array = My_Labels.tolist()

docs)是一种创建python列表的更简洁方法。