2017-04-26 92 views
0

假設我有一個非常大的圖G,我想找到距離矩陣,它只是一個二維數組。在我這樣做之前,我想確保有足夠的內存來分配我的二維數組。如果內存不足,請引發內存錯誤。我不想浪費幾個小時計算距離矩陣,最後得到一個內存錯誤。檢查是否有足夠的內存分配我的變量

回答

1

爲此目的使用numpy是個好習慣。肯定numpy數組會比標準列表使用更少的內存,可以控制用於權重的數據類型,實現大量矩陣操作,並且如果嘗試分配太大的數組,則會得到異常。

>>> a = numpy.empty((100, 100)) 
>>> a = numpy.empty((100000000, 1000000000)) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
MemoryError 
+0

謝謝。我會試一試,但我很奇怪,如果有一種方法可以在沒有任何其他依賴的情況下在python中執行此操作。我們可以使用例如malloc等C語言分配器嗎? – Abdulhakeem

+0

不,據我所知。標準工作是容器(列表,字典)。 Container可以分配它的空間(例如[None] * 1000,創建1000個元素的列表全部設置爲None),但是沒有擔保元素將使用多少內存。我認爲numpy數組最接近於C,你會用'標準'庫獲得。 – Ante