我有一個非常大的矩陣,我打算將它存儲爲Python中的字典列表。矩陣大多爲0,我想知道字典中的散列函數是否會爲每一行存儲前導空間。因此,例如,如果我初始化了一個100,000 x 100,000的矩陣,但是每個行存儲的實際元素只有大約1,000個條目,並且對於行50,000,我有從48,500到50,500的條目,Python會創建一個大小爲50,500或2,000的字典嗎?此外,如果前者是真的,我可以在Python的當前字典類中進行優化,還是需要創建自己的?Python中的散列字典
由於我的代碼的例子,我有這樣的:
class DictArray:
def __init__(self, width, height):
self.Width = width
self.Height = height
self.Data = [0 for _ in range(self.Height) ]
def __getitem__(self, k):
if (self.Data[ k[0] ] == 0):
return 0
elif (k[1] in self.Data[ k[0] ]):
return self.Data[ k[0] ][ k[1] ]
else:
return 0
def __setitem__(self, k, value):
if (self.Data[ k[0] ] == 0):
self.Data[ k[0] ] = { k[1] : value }
else:
self.Data[ k[0] ][ k[1] ] = value
向我們展示如何初始化100,000 x 100,000矩陣。 – Kevin
顯示較小矩陣的示例以及將容納它的字典 – m7mdbadawy
如果要有效處理稀疏矩陣處理,SciPy和NumPy可能是您需要的庫。 – sal