簡體   English   中英

將兩個數組連接成附加維度python

[英]concatenate two arrays into additional dimension python

當我進行串聯時,我有2個數組的形狀分別為(50,50,3) ....我需要新的尺寸為:

(2 , 50 , 50,3)

其中2是我嘗試的2張圖片:

np.concatenate((cat01 , cat02 ) , axis = 0)

輸出(100 , 50 , 3)

np.concatenate((cat01 , cat02 ) , axis = 1)

輸出(50 , 100 , 3)

那么,如何向數組添加另一個維度?

你要這個:

np.stack((cat01, cat02))

那么形狀是(2, 50, 50, 3)

cat01G = cat01[np.newaxis , :,:,:]

只需添加np.newaxis這將解決您的問題

盡管使用stack很方便,但是最好了解如何直接使用concatenate

np.concatenate((cat01[None,...] , cat02[None,...] ) , axis = 0)

換句話說-調整每個輸入數組的尺寸。 使用Nonenp.newaxis應該成為您在numpy常規使用的東西。 也要學會用reshape做同樣的事情。

也可以嘗試:

np.expand_dims(cat01, axis=0)

要么:

np.array((cat01, cat02))

比簡單一點

np.concatenate((cat01[None], cat02[None), 0)

而且速度差不多。

>>> cat01 = np.ones((50, 50, 3))
>>> cat02 = np.zeros((50, 50, 3))
>>> 
>>> from timeit import timeit
>>> kwds = dict(globals=globals(), number=100000)
>>> 
>>> timeit("np.concatenate((cat01[None], cat02[None]), 0)", **kwds)
0.7162981643341482
>>> timeit("np.array((cat01, cat02))", **kwds)
0.7192633128724992
>>> timeit("np.stack((cat01, cat02))", **kwds)
1.1847702045924962

暫無
暫無

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

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