我有一個巨大的數組,我想用小數組計算點積。但我越來越'陣列太大'有沒有解決辦法?巨大數組的點積numpy
import numpy as np
eMatrix = np.random.random_integers(low=0,high=100,size=(20000000,50))
pMatrix = np.random.random_integers(low=0,high=10,size=(50,50))
a = np.dot(eMatrix,pMatrix)
Error:
/Library/Python/2.7/site-packages/numpy/random/mtrand.so in mtrand.RandomState.random_integers (numpy/random/mtrand/mtrand.c:9385)()
/Library/Python/2.7/site-packages/numpy/random/mtrand.so in mtrand.RandomState.randint (numpy/random/mtrand/mtrand.c:7051)()
ValueError: array is too big.
這種情況已經發生在eMatrix =,no?您要求10^9個整數 - 每個整數字節數的1倍。所以至少應該將它們放入dtype int8而不是默認的int64數組中。 – mdurant 2014-09-05 14:33:04
但是我有一臺64位的機器,內存爲16GB RAM – Lanc 2014-09-05 14:51:56
所以8GB的第一個ePrime,至少也是一樣的,也許還有一些看不見的中間產品。 – mdurant 2014-09-05 14:53:59