【问题标题】:writing "missing array values" to a file将“缺失的数组值”写入文件
【发布时间】:2011-10-26 13:37:13
【问题描述】:
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”所建议的,我希望能够在写入文件时用 'NA' 替换 genfromtxt 读取并由填充值替换的缺失值。我能找到的最好的方法是将数组中的每一行转换为 str 数组,替换“缺失值”,然后用 csv writer 写入每一行。有没有更好的办法?

【问题讨论】:

    标签: python csv numpy file-io


    【解决方案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 之类的东西可能更有意义。不过,这将取决于您的特定应用程序。

    【讨论】:

      猜你喜欢
      • 2012-01-09
      • 2015-07-07
      • 1970-01-01
      • 1970-01-01
      • 2018-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多