我嘗試了很多,但沒有concatenate
或vstack
適合我。如何將2d numpy數組列表連接成一個3d numpy數組?
0
A
回答
4
你試過np.array
?
np.array([[1,2],[3,4]])
使得2D陣列通過連接2個維數組(列表)
同樣
np.array([np.ones(3,3), np.zeros(3,3)]]
應產生一個(2,3,3)陣列。
新功能np.stack
功能可讓您更好地控制添加的軸。它通過將所有輸入數組的維度擴大一個並連接起來。
您可以自己擴展尺寸,例如
In [378]: A=np.ones((2,3),int)
In [379]: B=np.zeros((2,3),int)
In [380]: np.concatenate([A[None,:,:], B[None,:,:]], axis=0)
Out[380]:
array([[[1, 1, 1],
[1, 1, 1]],
[[0, 0, 0],
[0, 0, 0]]])
In [381]: _.shape
Out[381]: (2, 2, 3)
關鍵的東西理解是:
匹配的輸入尺寸 - 他們必須匹配所有但被加入
擴大投入的尺寸尺寸如所須。要連接2D陣列以形成3D,2D必須首先展開爲3D。那
None
或np.newaxis
訣竅特別有價值。沿右軸連接。
stack
,hstack
,vstack
等都推動這項工作,而是一種技能numpy的用戶應該能夠直接與concatenate
工作。在交互式會話中練習小樣本。
In [385]: np.array((A,B)).shape
Out[385]: (2, 2, 3)
In [386]: np.stack((A,B)).shape
Out[386]: (2, 2, 3)
In [387]: np.stack((A,B),axis=1).shape
Out[387]: (2, 2, 3)
In [388]: np.stack((A,B),axis=2).shape
Out[388]: (2, 3, 2)
如果陣列形狀不同,將np.array
創建一個對象D型細胞陣列
In [389]: C=np.ones((3,3))
In [390]: np.array((A,C))
Out[390]:
array([array([[1, 1, 1],
[1, 1, 1]]),
array([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])], dtype=object)
In [391]: _.shape
Out[391]: (2,)
dstack
(和stack
)將具有不同大小的陣列問題:
In [392]: np.dstack((A,B,C))
....
ValueError: all the input array dimensions except for the concatenation axis must match exactly
2
你可以使用np.dstack,文檔可以在這裏位於:https://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.dstack.html
import numpy as np
l1 = []
# create list of arrays
for i in range(5):
l1.append(np.random.random((5, 3)))
# convert list of arrays into 3-dimensional array
d = np.dstack(l1)
d.shape #(5,3,5)
相關問題
- 1. 將2D numpy數組列表轉換爲一個3D numpy數組?
- 2. 如何將兩個1d numpy數組拉到2d numpy數組中
- 3. 2D塊系列的3D數組在numpy
- 4. 如何從numpy數組列表中刪除一個numpy數組?
- 5. 將2D numpy陣列重組爲3D
- 6. 如何將1D numpy數組分配給2D numpy數組?
- 7. 如何將一系列數組轉換爲2D numpy數組
- 8. 連接NumPy數組
- 9. 如何使用for循環動態創建2D numpy數組的3d numpy數組
- 10. 如何將2d列表轉換爲2d numpy數組?
- 11. Numpy 2D數組到表
- 12. 如何將2d數組放入numpy中?
- 13. Numpy重組2D數組
- 14. 如何有效地將2d numpy數組轉換爲1d numpy元組數組?
- 15. 將RGBA numpy數組轉換爲二進制2d numpy數組
- 16. Numpy數組:連接數組和整數
- 17. 將兩個2D numpy數組連接成一個2元組的單個二維數組
- 18. 列表成numpy數組列表
- 19. 如何製作一個3D數組的二維numpy數組?
- 20. 將numpy數組的列表視爲一個numpy對象
- 21. numpy數組的滾動連接數組
- 22. 如何將3列表轉換爲1 3D Numpy數組
- 23. 如何將numpy二維數組與numpy一維數組相乘?
- 24. 如何在3D Numpy數組中生成一個球體
- 25. 從numpy的3d數組中刪除2d子數組
- 26. 在numpy中用3d數組索引一個二維數組
- 27. 如何有效連接2 Numpy數組?
- 28. 如何連接許多numpy數組?
- 29. 將2d numpy數組轉換爲列表列表
- 30. 給numpy數組添加一個列表
我已經嘗試了'np.array()',但是它返回了一個形狀爲'(n,)'的numpy數組,而其中的每個元素都是另一個numpy數組。 – xxx222
然後你的'n'陣列的形狀必須不同。它正在創建一個對象數組。你陣列的形狀是什麼?我不明白'dstack'會如何工作。 – hpaulj
我當時並沒有意識到它!我終於發現我的一些numpy數組的大小不一樣。非常感謝您的回答! – xxx222