我正在嘗試改變繪圖代碼(matplotlib)的基本結構,該繪圖在計時器上更新,以便將繪圖數據的Python列表轉換爲使用numpy數組。我希望能夠儘可能地降低劇情的時間步長,並且由於數據可能會達到數千個點,如果我不能,我會開始快速地失去寶貴的時間。我知道numpy數組對於這類事情是首選,但是當我需要像Python程序員一樣思考時,以及當我需要像C++程序員那樣思考時,我很難找出最大限度提高內存訪問效率的方法。如何使用numpy數組添加和刪除Pythonic垃圾回收?
它在scipy.org文檔中爲append()函數說明它返回數組的副本。所有這些副本是否都能正確地進行垃圾收集?例如:
import numpy as np
a = np.arange(10)
a = np.append(a,10)
print a
這是我這是怎麼回事在C++的閱讀 - 的水平,但如果我知道我在說什麼,我就不會問這個問題,所以請糾正我,如果我錯了! = P
首先分配10個整數的塊,符號a指向該塊的開始。然後分配一個新的11個整數塊,總共使用21個整數(84個字節)。然後,一個指針被移動到11-int塊的開始處。我的猜測是,這將導致垃圾收集算法將10-int塊的引用計數遞減到零並解除分配。這是正確的嗎?如果不是,如何確保在追加時不會創建開銷?
我也不知道如何正確刪除一個numpy數組,當我完成使用它。我的地塊上有一個重置按鈕,只需刷新所有數據並重新開始。當我有名單時,這是使用del data[:]
完成的。是否有一個numpy數組的等價函數?或者我應該只是說data = np.array([])並指望垃圾收集器爲我完成這項工作?
所以基本上我需要冷靜。 =) 感謝您的澄清,我認爲這是如何工作,但我並沒有100%清楚。 – pr0crastin8r 2010-08-06 21:12:45