将numpy数组导出到文本文件

时间:2012-02-14 00:18:15

标签: numpy

我有这个代码,它接受一个矩阵并创建一个矩阵中每个元素的相邻邻居的数组。元素是id,我将用作在字典中查找值的键。 "钩状"用numpy格式编写这段代码帮助了我。我想要做的是将邻居列表导出到csv文件。我在下面的代码中遇到了writer.writerows命令的问题。我得到一个序列是预期的错误。我相信这是因为它希望编写一个列表列表,其中我的输出格式在邻居列表之间没有任何逗号。

代码的输出如下:

[0。0.309 0. 0 10. 11. 11. 12。]

[0。309. 310. 0. 1. 11. 12. 13。]

[309. 310. 311. 0. 2. 12. 13. 14。]

[310。311. 312. 1. 3. 13. 14. 15。]

[311. 312. 313. 2. 4. 14. 15. 16。]

[312. 313. 314. 3. 5. 15. 16. 17。]

[313. 314. 315. 4. 6. 16. 17. 18。]

[314. 315. 316. 5. 7. 17. 18. 19。]

[315。316. 317. 6. 8. 18. 19. 20。]

[316. 317. 318. 7. 9. 19. 20. 21。]

以下是代码:

   from numpy import *
   import sys
   import csv

   k = 1

   #Create nearest neighbors
   Xidx, Yidx = mgrid[-k:k+1,-k:k+1]

   #Remove the center (0,0) index
   center = (Xidx==0) & (Yidx==0)
   Xidx = Xidx[~center]
   Yidx = Yidx[~center]

   data = loadtxt("H:\SWAT\NC\GRID_FIDS2.txt")
   #print data

   for dx in range(11):
       for dy in range(11):
           FID = data[dx,dy]
           #print FID
           NL = data[Xidx+dx,Yidx+dy]
           print NL
           f = open("H:\SWAT\NC\Pro_NL.txt", 'wt')
           try:
               writer=csv.writer(f)
               writer.writerows(NL)
           finally:
               f.close()
   '''
   dx,dy = 0,4
   print "Cell Value data[%i,%i] = %f " % (dx, dy, data[dx,dy])
   print "k=%i nearest neighbors: "%k, data[Xidx+dx, Yidx+dy]
   '''    
   '

理想情况下,我希望csv文件包含所有FID值的一列,第二列具有与FID值对应的邻居列表(NL)。我很感激对此的任何意见......我一整天都在测试不同的东西而没有成功!

1 个答案:

答案 0 :(得分:3)

使用csv对象替代,您可以按如下方式构建代码:

f=open("out_file","w")
...
for dx in range(11):
   for dy in range(11):
       FID = data[dx,dy]
       .....
       NL = data[Xidx+dx,Yidx+dy]
       f.write(str(NL))
f.close()