我試圖在可以繼續增大尺寸的更大的3D陣列(稱爲STACK)內存儲多個2D陣列(STAR)。我需要STACK是一個全局參數,可以隨時通過多個函數訪問。要做到這一點,我使用numpy.dstack()
到目前爲止,這是我的代碼看起來像試過:在更大的3D陣列內存儲2D陣列
box_size = np.shape(star)[0]
# The 2D array I'm trying to add to the STACK
STAR = [[1, 1, 1, 1, 1],\
[1, 1, 2, 1, 1],\
[1, 2, 3, 2, 1],\
[1, 1, 2, 1, 1],\
[1, 1, 1, 1, 1,]]
# Initialize STACK to be an empty array the same size as STAR
STACK = np.zeros((2*(box_size/2)+1,2*(box_size/2)+1))
# A function that appends STAR to STACK
def add_Star(STAR):
np.dstack((STACK,STAR))
# Call the function
add_Star(STAR)
然而,當我嘗試打印更新STACK,我得到
[[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]]
我不知道如果我錯過了明顯的或完全濫用功能的東西。
要清楚,我希望STACK成爲我添加到它的每個STAR的記憶。也就是說,如果需要,我希望每個STAR都可以在STACK中訪問,稍後再刪除它。在實踐中,每個STAR都會有所不同,所以簡單地將STACK添加到STAR不會起作用。
我想使用這種方法,但是,我必須能夠初始化STACK零(稍後用於繪圖目的),而不必知道最終將多少個STAR添加到STACK。如果不使用'dstack',還有辦法嗎? – maelstromscientist
追加到列表是最有意義的。列表中的第一個數組可能是一個零「STAR」。 – hpaulj