Python:nd数组到csv

时间:2016-02-26 15:26:05

标签: python arrays csv numpy multidimensional-array

我是Python的真正初学者,并尝试制作一个将Pickled nd数组保存到csv文件中的脚本。 下面是我写的代码,但在终端中运行时没有给出任何东西。 您认为这个问题是什么?我完全无能为力......

非常感谢。提前

  

input => s01.dat,s02.dat,...,s32.dat

     

每个.dat文件都有{'标签' :((此处为2d数组)),'数据' :((此处为3d数组))}

import cPickle
import numpy as np

def csv_writer(file_name):
    x = cPickle.load(open(file_name, 'rb'))
    labels = x['labels']
    data = x['data']

    write_path_1 = file_name + '_labels.csv'
    write_path_2 = file_name + '_data.csv'

    np.savetxt(write_path_1, labels, fmt = '%.6f', delimiter=",")

    with file(wirte_path_2, 'w') as datafile:
        datafile.write('#Array shape: {0}\n'.format(data.shape))
        for data_slice in data:
            datafile.write('# New slice in 3dimension\n')
            np.savetxt(datafile, data_slice, fmt = '%.8f', delimiter = ",")


for i in range(1, 10):
    path = 's0' + str(i) + '.dat'
    csv_writer(path)

for i in range(10, 32):
    path = 's' + str(i) + '.dat'
    csv_writer(path)

2 个答案:

答案 0 :(得分:0)

您必须以这种方式修改脚本。尝试:

import cPickle
import numpy as np

def csv_writer(file_name):
    x = cPickle.load(open(file_name, 'rb'))
    labels = x['labels']
    data = x['data']

    write_path_1 = file_name + '_labels.csv'
    write_path_2 = file_name + '_data.csv'

    np.savetxt(write_path_1, labels, fmt = '%.6f', delimiter=",")

    with file(wirte_path_2, 'w') as datafile:
        datafile.write('#Array shape: {0}\n'.format(data.shape))
        for data_slice in data:
            datafile.write('# New slice in 3dimension\n')
            np.savetxt(datafile, data_slice, fmt = '%.8f', delimiter =     ",")


if __name__ == '__main__':
    for i in range(1, 10):
        path = 's0' + str(i) + '.dat'
        csv_writer(path)

    for i in range(10, 32):
        path = 's' + str(i) + '.dat'
        csv_writer(path)

答案 1 :(得分:0)

另一种方法是使用csv模块:https://docs.python.org/2/library/csv.html