2012-02-14 19 views
2

このコードでは、行列をとり、行列の各要素の隣接する隣り合った配列を作成します。要素は、辞書の値を参照するためのキーとして使用するIDです。 「フックド」は、このコードをnumpy形式で書いてくれたことを大いに助けました。私がしたいことは、近隣リストを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.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値を持つ1つの列であり、2番目の列はFID値に対応するNeighbor List(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

関連する問題