使用没有括号的Numpy阵列将多行写入CSV?

时间:2016-03-07 18:11:12

标签: python r csv numpy

我准备将一些数据投入到R.数据来自Python导出为CSV文件。 R正在读取数据只有两列,因为numpy数组被导出到CSV中,括号围绕着它,如下所示:

loudness_momentary,"[-83.84079859 -83.67103055 -83.80533271]"

我认为问题正在产生,因为当我将数据写入CSV时,列表中有一个"列表"发生这样的事情:

data = [ 
    ['loudness_momentary', loudness_momentary],
    ['loudness_short', loudness_short],
    ['loudness_integrated', loudness_integrated],
    ['lra', lra],
    ['crest_factor_1s', crest_factor_1s],
    ['crest_factor_100ms', crest_factor_100ms],
    ['spectral_centroid', spectral_centroid],
    ['spectral_spread', spectral_spread],
    ['spectral_skewness', spectral_skewness],
    ['spectral_kurtosis', spectral_kurtosis],
    ['zcr', zcr],
    ['spectral_rolloff', spectral_rolloff],
    ['spectral_crest_factor', spectral_crest_factor],
    ['spectral_flatness', spectral_flatness],
    ['spectral_flux', spectral_flux]
    ]

    # Write to CSV File
    with open(filepath + "/" + file_name + ".csv", "wb") as stem_data:
        w = csv.writer(stem_data, delimiter=',')
        print "Writing %s to csv" % file_name
        w.writerows(data)
    stem_data.close()

我的目标是给每一行一个"标题"让我知道数据是什么。如果我删除列表中的"列表"问题并且只写一行,数据正常写入。

基本上,我试图输出带有"字符串"的CSV文件。每行的标题,其后的每一行都是一个没有括号或引号的numpy数组,所以我可以很好地把它放到R中。

任何帮助将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:0)

data转换为列表列表:

data = [[row[0]]+row[1].tolist() for row in data]

例如,如果data以类似

的方式开头
In [34]: data = [['foo', np.array([1,2,3])], ['bar', np.array([1,2,3])]]

然后

In [35]: data = [[row[0]]+row[1].tolist() for row in data]

data转换为此列表列表:

In [36]: data
Out[36]: [['foo', 1, 2, 3], ['bar', 1, 2, 3]]

顺便说一下,使用with-statement打开文件是件好事。但请注意,当执行流程离开with-block时,Python会自动关闭文件。因此,在离开stem_data.close()后明确调用with-block是不必要的。