我有以下格式的列表ID
,X
和Y
坐标:
[[1.0, 300617.25483065785, 9761077.375684619],
[1.0, 301117.25483065785, 9760577.375684619],
[1.0, 301117.25483065785, 9760077.375684619],
[1.0, 314117.25483065785, 9745577.375684619],
[2.0, 297617.25483065785, 9745077.375684619],
[2.0, 298117.25483065785, 9745077.375684619],
[1.0, 314617.25483065785, 9745077.375684619],
[1.0, 315117.25483065785, 9745077.375684619],
[2.0, 298617.25483065785, 9744577.375684619],
[2.0, 299117.25483065785, 9744577.375684619]]
现在我想以下列格式在文本文件中编写此列表:
1
X_Coordinate Y_Coordinate
............ ............
X_Coordinate Y_Coordinate
END
2
X_Coordinate Y_Coordinate
............ ............
X_Coordinate Y_coordinate
END
END
我怎么能在python中实现它?我试过这样的:
new_arry = numpy.array(x)
textfile = os.path.join(path, 'test123.txt')
outFile = open(textfile, 'w')
for i in grid_code:
new_list=numpy.where(new_arry[:,0]==i)
mask_list=new_arry[new_list,:]
此处x
是我的列表。现在我想将每个蒙版数组写入具有X和Y坐标的文件中。
答案 0 :(得分:0)
您没有指定grid_code是什么,但更好的方法是找出使用numpy.unique(new_array[:,0])
的所有ID,这将为您提供第一列中唯一值的列表。这将确保您不会尝试将浮点数与int进行比较。
最好在处理文件时使用with
,因为这样您可以确保在完成后关闭它们,而不必记住.close()
它们。
在numpy.where
声明中,其mask_list
的书写方式为[ [ [], [], ..., [] ] ]
,即会有一组额外的括号。您可以通过定义mask_array = new_array[new_list[0],:]
由于您需要自定义格式,您可以使用循环来定义它。
with open(os.path.join(path, 'test123.txt'), 'w') as outFile:
for i in numpy.unique(new_array[:,0]):
new_list = numpy.where(new_array[:,0] == i)
mask_list = new_array[new_list[0],:]
outFile.write(str(i)+'\n')
for line in mask_list:
outFile.write('\t'.join((str(line[1]),str(line[2]))) + '\n')
outFile.write('END\n')
outFile.write('END\n')