[英]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)
换句话说-调整每个输入数组的尺寸。 使用None
或np.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.