Python 将两个数组连接到其他维度

Python 将两个数组连接到其他维度,python,numpy,concatenation,Python,Numpy,Concatenation,我有两个数组,每个(50,50,3) 当我进行连接时。。。。我需要新维度为: (2 , 50 , 50,3) 其中2表示2个图像 我试过: np.连接((cat01,cat02),轴=0) 输出(100、50、3) 及 np.连接((cat01,cat02),轴=1) 输出(50、100、3) 那么,如何向数组中添加另一个维度呢?您希望这样: np.stack((cat01, cat02)) 然后形状是(2,50,50,3) 只需添加np.newaxis这将解决您的问题虽然堆栈很方便,但最好

我有两个数组,每个
(50,50,3)
当我进行连接时。。。。我需要新维度为:

(2 , 50 , 50,3)
其中2表示2个图像 我试过:

np.连接((cat01,cat02),轴=0)

输出
(100、50、3)

np.连接((cat01,cat02),轴=1)

输出<代码>(50、100、3)

那么,如何向数组中添加另一个维度呢?

您希望这样:

np.stack((cat01, cat02))
然后形状是
(2,50,50,3)


只需添加np.newaxis这将解决您的问题

虽然
堆栈
很方便,但最好了解如何直接使用
串联

np.concatenate((cat01[None,...] , cat02[None,...] ) , axis = 0)
换句话说-调整每个输入数组的尺寸。使用
None
np.newaxis
应该成为您在
numpy
中经常使用的东西。还要学习如何使用
重塑
做同样的事情

还可以尝试:

np.expand_dims(cat01, axis=0)
或:

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
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