【发布时间】:2018-07-09 21:34:34
【问题描述】:
我正在尝试获取多个 csv 文件(15 x 15 矩阵),将它们展平为一维矩阵,然后使用 python 将它们逐行写入新的 csv 文件。
输入 csv 文件的示例:
0,1,1,1,1,1,1,1,1,0,0,0,0,0,0
0,0,1,0,0,0,0,0,1,0,0,0,0,0,0
....
....
这是我目前使用的方法:
import pandas as pd
import glob
import numpy as np
path = r'.../Model_AMs'
allFiles = glob.glob(path + "/*.csv")
for file_ in allFiles:
df = pd.read_csv(file_, header=None).values.flatten()
np.savetxt('trainingdata.csv', df, newline=" ", delimiter=',')
但是,当我打开 trainingdata.csv 时,它看起来像这样:
0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00
它不是用','来分隔元素,而且还添加了很多0,而不是简单地将值保持为1或0。
任何帮助将不胜感激。谢谢
【问题讨论】:
-
数字的格式可以使用关键字参数
fmt(具体使用方法见docs.scipy.org/doc/numpy-1.13.0/reference/generated/…和docs.python.org/3/library/…) -
我看到了,但不确定它是否适合使用。在文档中,相同的
fmt用于“str 或 strs 序列”。我试图保持二进制格式(我相信这是整数?) -
如果您将所有值收集到一个二维数组中并通过一个
savetxt调用将其写入会更好。当前,您的循环正在覆盖以前的保存。您可以保存一维数组,但使用二维数组(行 = 行;列 = 列)更容易控制布局。默认fmt是一般科学浮点数。 -
当我按照@hpaulj 的建议使用二维数组时,我无法重现缺少逗号的问题,但是当我覆盖这些行时,我也没有逗号。