2012-02-14 73 views
2

我有這個代碼需要一個矩陣並創建矩陣中每個元素的相鄰相鄰元素的數組。元素是我將用作查找字典中值的鍵的id。 「Hooked」以極高的格式編寫此代碼,幫助我大展拳腳。我想要做的是將鄰居列表導出到csv文件。我在下面的代碼中遇到了writer.writerows命令的問題。我收到了一個預期序列的錯誤。我相信這是因爲它希望編寫一個列表,其中我的輸出格式在鄰居列表之間沒有任何逗號。將numpy數組導出到文本文件

從代碼的輸出如下所示:

[0. 0. 309. 0. 0. 10. 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)。我很欣賞這方面的任何投入......我一整天都在測試不同的東西而沒有成功!

回答

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() 
+0

這麼簡單...啊!感謝您的幫助,稍微格式化它看起來棒極了! – Linda 2012-02-14 15:42:32