2013-04-09 1100 views
3

我正在創建一個自定義文件編寫器。我需要將數組的值寫成逗號分隔成文件中的一行。我能做到以下幾點:從python numpy數組中寫入逗號分隔的值

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方法。

回答

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