4

我正在创建一个自定义文件编写器。我需要将数组的值以逗号分隔的形式写出文件中的一行。我可以执行以下操作:

def as_csv(array):

    return ','.join([str(i) for i in array]) + '\n'

然后:

outfile.write(my_header)
outfile.write(other_stuff)
outfile.write(as_csv(array))

但我想知道这是否是最有效的方法,或者是否有更好的方法使用 numpy.array_str 或 numpy.array_repr 方法。

4

2 回答 2

6

您还可以使用内置的 numpy 方法np.savetxthttp ://docs.scipy.org/doc/numpy/reference/generated/numpy.savetxt.html

np.savetxt(outfile, array, delimiter=',')
于 2013-04-09T12:09:19.520 回答
0

我没有尝试np.savetxt在下面的上下文中使用它,也许只要文件以附加模式打开,它就可以使用,但这是我试图做的解决方案。但是,它可能不是最有效的..

def _as_csv(self, values):
    vals = ','.join([str(i) for i in values])
    return vals + '\n'

def output(self, filename, series_cnt, series_name, series_type, startdate, N, values, step = 1000):
    """ outputs data to a file """

    starttime = startdate

    num_imports = (N / step) + 1

    outfile = open(filename.format(series_cnt, i), 'w')
    outfile.write('#{0},{1},{2},\n'.format('TEST', startdate.strftime('%Y%m%d%H%M%S000'), str(num_imports)))


    for i in range(0, N, step):

        line_start = '/Test/{0},{1},{2},{3},'.format(series_name, series_type, starttime.strftime('%Y%m%d%H%M%S000'), step)
        outfile.write(line_start)
        nxt = i + step
        starttime = starttime + dt.timedelta(hours=step)

        outfile.write(self._as_csv(values[i:nxt]))

        outfile.close()
于 2013-04-15T13:46:48.093 回答