将"missing array values"写入文件


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')

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

没有一种内置的方法可以做到这一点,因为通常编写自己的函数要比创建一个"一刀切"的函数来满足您的需要容易得多。

在你的情况下,我不会打扰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这样的方法可能更有意义。不过,这将取决于您的特定应用程序。

最新更新