我有这个代码,它接受一个矩阵并创建一个矩阵中每个元素的相邻邻居的数组。元素是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)。我很感激对此的任何意见......我一整天都在测试不同的东西而没有成功!
答案 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()