これは前の質問です Python で関数の時間パフォーマンスを向上させるには、テキスト ファイルを分割する効率的な方法を見つける必要があります
次のテキスト ファイル (32 GB 以上)がソートされていません
....................
0 274 593869.99 6734999.96 121.83 1,
0 273 593869.51 6734999.92 121.57 1,
0 273 593869.15 6734999.89 121.57 1,
0 273 593868.79 6734999.86 121.65 1,
0 272 593868.44 6734999.84 121.65 1,
0 273 593869.00 6734999.94 124.21 1,
0 273 593868.68 6734999.92 124.32 1,
0 274 593868.39 6734999.90 124.44 1,
0 275 593866.94 6734999.71 121.37 1,
0 273 593868.73 6734999.99 127.28 1,
.............................
最初と 2 番目の列は、グリッド内の x、y、z ポイントの位置の ID (例: 0 -273) です。
def point_grid_id(x,y,minx,maxy,distx,disty):
"""give id (row,col)"""
col = int((x - minx)/distx)
row = int((maxy - y)/disty)
return (row, col)
これ(minx, maxx)
は、 size のグリッドの原点ですdistx,disty
。Id タイルの数は
tiles_id = [j for j in np.ndindex(ny, nx)] #ny = number of row, nx= number of columns
from [(0,0),(0,1),(0,2),...,(ny-1,nx-1)]
n = len(tiles_id)
~32 GB のファイルをn (= len(tiles_id))
多数のファイルにスライスする必要があります。
ソートせずにこれを実行できますが、ファイルを n 回読み取ります。このため、 form を開始するファイルの効率的な分割方法を見つけたいと考えています(0,0) (= tiles_id[0])
。その後、分割されたファイルを一度だけ読み取ることができます。