在第四维连接两个numpy数组
我有两个三维的numpy数组,大小是3 x 4 x 5,我想把它们合并成一个四维的数组,大小变成3 x 4 x 5 x 2。在Matlab中,可以用cat(4, a, b)
来实现,但在Numpy中不能这样做。
举个例子:
a = ones((3,4,5))
b = ones((3,4,5))
c = concatenate((a,b), axis=3) # error!
为了更清楚,我希望c[:,:,:,0]
和c[:,:,:,1]
分别对应原来的两个数组。
6 个回答
14
下面这个怎么样:
c = concatenate((a[:,:,:,None],b[:,:,:,None]), axis=3)
这段代码会生成一个 (3 x 4 x 5 x 2) 的数组,我认为这个数组的排列方式是你需要的。
在这里,None
和 np.newaxis
是一样的意思:Numpy: 我应该使用 newaxis 还是 None?
编辑 根据 @Joe Kington 的建议,这段代码可以稍微简化一下,使用省略号来表示:
c = concatenate((a[...,None],b[...,None]), axis=3)
29
这是你要的内容:
import numpy as np
a = np.ones((3,4,5))
b = np.ones((3,4,5))
c = np.concatenate((a[...,np.newaxis],b[...,np.newaxis]),axis=3)
32
那关于这个呢
c = np.stack((a,b), axis=3)