У меня есть этот код, который принимает матрицу и создает массив соседних соседей каждого элемента в матрице. Элементы являются идентификаторами, которые я буду использовать в качестве ключа для поиска значений в словаре. «Hooked» очень помог мне с написанием этого кода в формате 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. 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, а второй столбец имеет список соседей (NL), соответствующий значению FID. Я ценю любой вклад в этом ... Я тестировал разные вещи весь день без успеха!
Так просто ... тьфу! Спасибо за вашу помощь, с небольшим форматированием он отлично выглядит! – Linda