Python 连接两个numpy阵列通道

Python 连接两个numpy阵列通道,python,numpy,Python,Numpy,我有两个numpy阵列,例如: a = [[1,2,3],[4,5,6],[7,8,9]] b = [[11,12,13],[14,15,16],[17,18,19]] 哪些是同一图像的通道。我希望以尽可能类似Python的方式获得“已连接”通道阵列。想要的结果: c = [[[1,11],[2,12],[3,13]], [[4,14],[5,15],[6,16]], [[7,17],[8,18],[9,19]]] 我们尝试了什么: 我创建了一个大小相同的数组,并在两个源数组

我有两个numpy阵列,例如:

a = [[1,2,3],[4,5,6],[7,8,9]]
b = [[11,12,13],[14,15,16],[17,18,19]]
哪些是同一图像的通道。我希望以尽可能类似Python的方式获得“已连接”通道阵列。想要的结果:

c = [[[1,11],[2,12],[3,13]],
    [[4,14],[5,15],[6,16]],
    [[7,17],[8,18],[9,19]]]
我们尝试了什么: 我创建了一个大小相同的数组,并在两个源数组上循环以连接它们

for x in range(len(a)):
    for y in range(len(a[x])):
        c[x][y] = [a[x][y],b[x][y]]

我需要什么:我希望找到一种更高效、模块化和Python式的实现方法。

您可以在第二个轴上使用
np.stack

>>> np.stack((a,b),axis=2)
array([[[ 1, 11],
        [ 2, 12],
        [ 3, 13]],

       [[ 4, 14],
        [ 5, 15],
        [ 6, 16]],

       [[ 7, 17],
        [ 8, 18],
        [ 9, 19]]])
检查它是否与
c
数组相同:

c = np.array([[[1,11],[2,12],[3,13]],
              [[4,14],[5,15],[6,16]],
              [[7,17],[8,18],[9,19]]])

>>> (c == np.stack((a,b),axis=2)).all()
True
这是。您提到这是一张图片,从文档中可以看出:

这是一种将二维阵列(图像)堆叠到单个三维阵列以进行处理的简单方法


次要注意事项是,文档中还指出应首选
串联
,以及
堆栈
,因为它们更通用。

如何在最后一个代码段中初始化
c
np.dstack((a, b))
array([[[ 1, 11],
        [ 2, 12],
        [ 3, 13]],

       [[ 4, 14],
        [ 5, 15],
        [ 6, 16]],

       [[ 7, 17],
        [ 8, 18],
        [ 9, 19]]])