簡體   English   中英

從現有的2d數組中構造numpy的3d數組

[英]Contruct 3d array in numpy from existing 2d array

在為NumPy計算准備數據期間。 我很好奇構建方式:

myarray.shape => (2,18,18)

從:

d1.shape => (18,18)
d2.shape => (18,18)

我嘗試使用NumPy命令:

hstack([[d1],[d2]])

但它看起來不起作用!

剛做d3 = array([d1,d2])似乎對我有用:

>>> from numpy import array
>>> # ... create d1 and d2 ...
>>> d1.shape
(18,18)
>>> d2.shape
(18,18)
>>> d3 = array([d1, d2])
>>> d3.shape
(2, 18, 18)

hstack和vstack不會改變數組的維數:它們只是將它們“並排”。 因此,組合二維陣列會創建一個新的二維陣列(而不是一個3D陣列!)。

你可以做Daniel建議的(直接使用numpy.array([d1, d2]) )。

您也可以在堆疊數組之前將數組轉換為3D數組,方法是為每個數組添加一個新維度:

d3 = numpy.vstack([ d1[newaxis,...], d2[newaxis,...] ])  # shape = (2, 18, 18)

事實上, d1[newaxis,...].shape == (1, 18, 18) ,你可以直接堆疊兩個3D數組並獲得你想要的新3D數組( d3 )。

arr3=np.dstack([arr1, arr2])

arr1,arr2是2d數組shape (256,256)shape (256,256)shape(256,256,2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM