2016-02-17 127 views
0

有沒有辦法通過追加2d numpy數組來創建一個3d numpy數組?我目前所做的是將我的2d numpy數組添加到預先確定的2d numpy數組的初始化列表中,即List = [np.zeros((600,600))]。在追加我所有的2d numpy數組後,我使用numpy.dstack來創建3d numpy數組。我認爲這不是一個非常有效的方法。有什麼建議麼。使用追加方法創建一個3d numpy數組矩陣

回答

2

最有效的方法是首先初始化3d數組,然後將數據順序寫入它。通過避免不必要的副本,提高了效率。然而,只要你沒有使用非常大的數組(在三維中的任何一個),收益都是微乎其微的。

import numpy as np 

arr = np.empty(shape=(2, 100, 100)) 

arr[0,:,:] = array_2d_1 
arr[1,:,:] = array_2d_2 
1

根據定義,你不能追加任何東西到一個數組,因爲當陣列中的存儲聲明它,因爲它是將需要保留儘可能多的空間。

你可以做的是要麼聲明一個具有已知幾何和初始值的數組,然後重寫每行的新值,保持「附加」行的計數器,或者你可以在運行時加倍數組的大小空間不足。