【问题标题】:Write numpy arrays to files using csv使用 csv 将 numpy 数组写入文件
【发布时间】:2014-07-22 09:02:01
【问题描述】:

我有一个带有地理坐标的 .asc 文件列表,我想将其加载到 .csv 文件中,以便在 Excel 中进行进一步分析。每个 .asc 文件包含大约 2000 行。

list_files = ['./p2c0765f029.asc',..., './p2c0781f029.asc']


with open('output_file.csv', 'a+') as outfile:
    for file in list_files:
        file_in = loadtxt(file, usecols = (1,2), comments = "#")      
        csvwriter = csv.writer(outfile, delimiter = ' ')
        csvwriter.writerow('%s\n' % file_in)  

但是,这会输出一个文件,其中每个 array 都存储在 一行 中(当我在 Excel 中打开文件时)。

[ [ " " - 8 . 7 9 8 4 5 4 5 0 e + 0 1 " " " " " " 9 . 5 5 1 5 5 4 8 0 e + 0 1 " " " " ]]

如何实现这一点,以便 numpy 数组中的每一行都写在一行中?另外我想去掉"[],只输出坐标。

【问题讨论】:

  • 你有 numpy 并且你想在 excel 中做further anaysis?哎呀...让我翻译一下它的声音。我有一把自动机枪,我想用长矛打猎。
  • @Oz123 更像是一把刺刀 :)。但说真的:我想如果您接受过使用数据透视表的培训,那么您可以在 Excel 中更快、更轻松地进行大量分析。
  • 好的。感谢@EdChum 指出正确的方向。

标签: python csv numpy


【解决方案1】:

使用 numpy.savetxt 我得到了我需要的输出:

with open('output_file.txt', 'a+') as outfile:
     for file in list_files:
         file_in = loadtxt(file, usecols = (1,2), comments = "#")      
         np.savetxt(outfile, file_in, delimiter=' ', newline='\n')   

不确定这是否是最 Pythonic 的方式,但它有效。

【讨论】:

  • 对我来说pythonic在这里不是问题,numpy提供了一种加载文本数据的方法并提供了一种保存方法,因此这将是首选方法。顺便说一句,Pandas 在加载 csv 数据并可能将其写出时要快得多,它的 api 比 numpy 更友好
  • 是的,使用 api 总是 pythonic :)。
猜你喜欢
  • 2023-03-31
  • 2014-08-30
  • 2016-09-27
  • 2012-06-07
  • 2018-07-09
  • 2022-06-22
  • 2019-08-24
  • 2019-04-09
  • 2015-08-07
相关资源
最近更新 更多