【问题标题】:Write a 2D array to a text file [duplicate]将二维数组写入文本文件[重复]
【发布时间】:2016-02-04 04:00:36
【问题描述】:

我有一个二维数组,我想将它写入一个文件,数组看起来几乎像这样:

>>print (arr)
[0 0 20 
0 5 520 
2 0 720
.... 
8 -20 150
0 10 10] 

当我尝试将其写入文件时,它被保存为最后一个输出,这里是我使用的:

ff = open('output.txt', 'w')
ff.write(arr)

这是文件中的结果

 [0 0 20 
 0 5 520 
 2 0 720
 .... 
 8 -20 150
 0 10 10] 

我在本网站的另一个问题中看到了解决方案 但我还是有问题,

np.ndarray.tofile(arr,"output.txt",'\n','%s')

文件中的输出是这样的:

0 0 20 0 50 ...

以此类推直到数组结束

我希望输出如下所示:

 0 0 20 
 0 5 520 
 2 0 720
 .
 .
 .
 8 -20 150
 0 10 10

【问题讨论】:

  • 你想要np.savetxt
  • @ali_m 我试过 np.savetxt 但它需要大约 26 秒,时间太长了
  • 我想试试这个import numpy as np x = np.arange(20).reshape((4,5)) np.savetxt('test.txt', x),但问题是我不知道如何排列和重塑我的阵列
  • 保存到文本仅在您需要数组为人类可读格式时才有用。如果您的数组需要 26 秒来保存,那么我无法想象很多人会想要阅读它......如果您想要性能,那么您应该保存为 .npy 文件(例如使用 np.save)或作为原始二进制文件 (array.tofile())。
  • 听起来您真正的问题是您不了解如何重塑 numpy 数组。您的问题中的输出看起来像一维数组(甚至可能是一个列表),而不是您的问题标题所述的二维数组。无论如何,将 numpy 数组保存到文本文件是一个在 SO 之前已经讨论过很多次的问题,所以我投票结束。

标签: python numpy


【解决方案1】:

您可以将您的数组拆分为多个块并分别写入每个块。

这样的事情应该可以帮助您入门:

myarr = [1,10,100,2,20,200,3,30,300,4,40]

def split_to_chunks(myarray, e):
    return (myarray[i:i+e] for i in xrange(0, len(myarray), e))

for i in split_to_chunks(myarr, 3):
    # etc

【讨论】:

  • 这是一个列表,而不是一个 numpy 数组(尽管我可以告诉 OP 可能也在使用一个列表)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
  • 2013-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-06
相关资源
最近更新 更多