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编写每一行。有没有更好的办法?
答案 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
这样的事情可能更有意义。但这取决于您的特定应用。