python - 如何在numpy中组合数组?

标签 python numpy concatenation

我有一个 3x2x2 numpy 数组,我想将另一个 3x2 数组加入其中,这样我的新数组就是 3x2x3。我一直在尝试使用堆栈和连接,但我不断收到ValueError:所有输入数组必须具有相同的形状。现有数组如下

array([[[1, 1],
        [2, 2]],

       [[3, 3],
        [4, 4]],

       [[5, 5],
        [6, 6]]])

我希望加入另一个数组,如下所示:

array([[1, 2],
       [3, 4],
       [5, 6]])

输出如下:

array([[[1., 1., 1.],
        [2., 2., 2.]],

       [[3., 3., 3.],
        [4., 4., 4.]],

       [[5., 5., 5.],
        [6., 6., 6.]]])

我不确定我是否正确编写了输出,因为 numpy 显示 3 维矩阵的方式让我感到困惑 - 结果应该具有形状(3,2,3)。我希望迭代地执行此操作,以便我可以继续扩展矩阵,以便形状为 (3,2,4) 然后 (3,2,5) 然后 (3,2,6) 等等...

最佳答案

将 3x2 数组 reshape 为 3x2x1,然后执行 dstack:

a = array([[[1, 1],
            [2, 2]],
           [[3, 3],
            [4, 4]],
           [[5, 5],
            [6, 6]]])

b = array([[1, 2],
           [3, 4],
           [5, 6]])

np.dstack((a, b[...,None]))
#array([[[1, 1, 1],
#        [2, 2, 2]],
#       [[3, 3, 3],
#        [4, 4, 4]],
#       [[5, 5, 5],
#        [6, 6, 6]]])

np.dstack((a, b[...,None])).shape
#(3, 2, 3)

或者沿最后一个轴np.concatenate:

np.concatenate((a, b[...,None]), axis=-1)

关于python - 如何在numpy中组合数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54405922/

相关文章:

python - 如何使用更少的内存完成文本分类任务

python - 将可变大小子列表的嵌套列表展平为 SciPy 数组

c++ - 如何在 C++ 中连接函数 m_stream 中的字符串?

python - py3k : case-insensitive list sorting - With or WIthout lambda?

python - 将两个值合并到数据框中的一个单元格中

模式= 1的数组中的Python PIL位图/png

pandas - 有没有更快的方法使用 pandas 连接巨大的数据帧(40GB)

matlab - MATLAB 中的向量串联

python - 使用正确的密码解密受 aes-256 位保护的 pdf

Python同时迭代两个列表