【问题标题】:Column bind in Numpy 2 array and 1 matrixNumpy 2数组和1矩阵中的列绑定
【发布时间】:2021-12-30 10:13:34
【问题描述】:

我有两个数组:

dvec =  np.repeat(0, k);dvec
mu   = np.array([1,2,3,4,5])
Amat =  np.stack((dvec, mu), axis=1);

还有一个矩阵

I = np.identity(k)

我想对它们进行列绑定以便拥有一个矩阵

Amat =  np.stack((np.repeat(1,k), mu,I), axis=1);Amat

但是当我这样做时,python 会报告我

ValueError: all input arrays must have the same shape

我该如何解决这个错误?

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:

    您可以使用 numpy.column_stack: https://numpy.org/doc/stable/reference/generated/numpy.column_stack.html

    k=5
    dvec =  np.repeat(0, k);
    mu   = np.array([1,2,3,4,5])
    I = np.identity(k)
    
    Amat=np.column_stack((dvec,mu,I))
    

    结果:

    array([[0., 1., 1., 0., 0., 0., 0.],
           [0., 2., 0., 1., 0., 0., 0.],
           [0., 3., 0., 0., 1., 0., 0.],
           [0., 4., 0., 0., 0., 1., 0.],
           [0., 5., 0., 0., 0., 0., 1.]])
    

    【讨论】:

      【解决方案2】:

      这将回答您的问题:

      np.hstack((np.repeat(1, 5).reshape(-1,1), np.array([1,2,3,4,5]).reshape(-1,1), I))
      

      np.stack 沿新轴连接一系列数组。
      所以它要求它们具有相同的形状。

      您需要的是hstack,它将数组按顺序水平堆叠(列绑定)

      【讨论】:

        猜你喜欢
        • 2019-10-08
        • 2021-12-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多