将“缺少数组值”写入文件

时间:2011-08-13 21:09:03

标签: python csv numpy file-io

import numpy as np

f1= "test_io.csv"
f2= "test_io2.csv"

array = np.genfromtxt(f1,delimiter=',',missing_values='NA', filling_values=1.e20)
np.savetxt(f2,array,delimiter=',')

#np.savetxt(f2,array,delimiter=', missing_values = 1.e20, filling_values='NA')

正如第二个“savetxt”所建议的那样,我希望能够替换genfromtxt读取的缺失值,并用填充值替换,写入文件时使用“NA”。我能找到的最好的方法是将数组中的每一行转换为str数组,替换“缺失值”,并用csv writer编写每一行。有没有更好的办法?

1 个答案:

答案 0 :(得分:1)

没有一种内置的方法可以做到这一点,因为通常更容易滚动自己,而不是制作一个“一刀切”功能满足您的需求。

在您的情况下,我不会打扰csv模块。当你需要读取复杂的数据时,它很棒,但是对于这么简单的事情,它不容易使用它。

missing, fill = 1.e20, "NA"
with open("test_io2.csv", 'w') as outfile:
    for row in array:
        line = ','.join([str(x) for x in row if x != missing else fill])
        outfile.write(line + '\n')

当然,关于测试浮点数相等性的常见警告也适用。做一些像if x < 9e19 else fill这样的事情可能更有意义。但这取决于您的特定应用。