0
我正在嘗試迭代大型數字高程模型(DEM),並使用Python以4000的增量創建新文本文件。以下是逐行遍歷文件的代碼,但我想增加寫入新文件的行數。任何幫助將不勝感激。使用Python對大DEM進行迭代
import pandas as pd
import numpy as np
#Read in File
df1 = pd.read_table('Large_DEM_File.txt', skiprows=6, chunksize=500)
df = pd.concat(df1)
rows = 320000
y= -1003.00
delta = 0.00025
linecount= 4001
#initialize counter
i = 0
while i <= rows:
for i, row in df.iterrows():
filename = open(str(i)+'.txt','w')
filename.write("ncols 136000\nrows 320000\nxllcorner 122\n")
filename.write("yllcorner %.5f" %(y+rows*delta-(i+1)*delta))
filename.write("\ncellsize 0.00025\nNODATA_value -9999\n")
filename.write(row[0:4000+i])
i += 4000
枚舉是一個偉大的功能,但它並不總是與大數據工作。我的最終目標是在不存儲數據的情況下迭代大數據(ascii DEM),並將大數據分割爲更易消化的內存以供進一步計算。我聽說xrange是一種可能的方式,但我沒有太多的使用該功能的經驗。 – FlyTheW
我上面的代碼和你的代碼之間的主要區別是不枚舉,它是通過塊處理。我的代碼中的df_chunk_reader是一個生成器(如xrange),但一次會產生一大塊數據集。這樣,您可以按大塊處理數據。塊的大小可以是任何你想要的,由chunksize參數決定。 –
在你的問題代碼中,你也有df1這是一個發生器,它一次產生你的數據集塊。但不是按塊來處理塊,而是將所有塊連接在一起,然後逐行處理它。如果我正確理解你的問題,你應該像在上面的答案代碼中一樣按塊進行處理。 –