大きなExcelファイルを読むにはopenpyxl
とnumpy
を使用します。コードは、彼らが正常に動作(4メガバイトExcelは16000行と50列を含むファイル)中規模のファイルに対してnumpyは大きな行列のサイズを変更できません
W = load_workbook(fname, read_only = True)
p = W.worksheets[0]
a=[]
m = p.max_row
n = p.max_column
for row in p.iter_rows():
for k in row:
a.append(k.value)
# convert list a to matrix (for example 5*6)
aa= np.resize(a, [m, n])
のように見えます。しかし、大きなファイル(2100B 100000行と50列)の場合、numpy
はメモリエラーで失敗します。システム上で使用可能なメモリがあります。
1-行列のサイズを変更する際に、どのくらいのメモリが必要でしたか?
2メモリ(Javaではヒープサイズのようなもの)を増やすにはどうすればよいですか?
Traceback (most recent call last):
File "exread.py", line 26, in <module>
aa= np.resize(a, [m, n])
File "C:\Users\m.naderan\AppData\Local\Programs\Python\Python36\lib\site-packa
ges\numpy\core\fromnumeric.py", line 1121, in resize
a = ravel(a)
File "C:\Users\m.naderan\AppData\Local\Programs\Python\Python36\lib\site-packages\numpy\core\fromnumeric.py", line 1468, in ravel
return asanyarray(a).ravel(order=order)
File "C:\Users\m.naderan\AppData\Local\Programs\Python\Python36\lib\site-packages\numpy\core\numeric.py", line 583, in asanyarray
return array(a, dtype, copy=False, order=order, subok=True)
MemoryError
これは 'resize'の使用には何がポイントですか?それはめったに必要ありません。 np.arrayを使用して、リストから配列を作成します。 – hpaulj
まあ、私はそれがm * nに配列をすっきりとサイズ変更すると思った。だから、 'np.array'の使い方を教えてください。/ – mahmood
あなたは' aa = np.array(p.rowsのjではi [jのi.value]) ')'最初の2行。 – Nyps