将两个数组连接到另外的维度python中

时间:2018-05-03 03:36:16

标签: python numpy concatenation

每个(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)

那我怎么能在数组中添加另一个维度呢?

4 个答案:

答案 0 :(得分:0)

你想要这个:

numpy.array:

然后形状为np.stack((cat01, cat02))

答案 1 :(得分:0)

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

只需添加np.newaxis即可解决您的问题

答案 2 :(得分:0)

虽然stack很方便,但最好还是了解如何直接使用concatenate

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

换句话说 - 调整每个输入数组的尺寸。使用Nonenp.newaxis应成为numpy中常规使用的内容。还要学会用reshape做同样的事情。

还可以尝试:

np.expand_dims(cat01, axis=0)

答案 3 :(得分: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