我有这段代码,它接受一个矩阵并创建矩阵中每个元素的相邻元素的数组。这些元素是 id,我将使用它们作为在字典中查找值的键。 “Hooked”极大地帮助我以 numpy 格式编写这段代码。我想做的是将邻居列表导出到 csv 文件。我在使用下面代码中的 writer.writerows 命令时遇到问题。我收到一个错误,提示需要一个序列。我相信这是因为它希望编写一个列表列表,其中我的输出格式在邻居列表之间没有任何逗号。
代码的输出如下所示:
[ 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)。我很感谢对此的任何意见...我一整天都在测试不同的东西但没有成功!
最佳答案
除了使用 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()
关于numpy - 将 numpy 数组导出到文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9270042/