为了账号安全,请及时绑定邮箱和手机立即绑定

ValueError:形状(1,1)和(4,1)未对齐:1(dim 1)!= 4(dim 0)

ValueError:形状(1,1)和(4,1)未对齐:1(dim 1)!= 4(dim 0)

慕标5832272 2022-06-14 09:48:38
所以我试图实现 (a * b) * (M * aT) 但我不断收到 ValueError。由于我是 python 和 numpy 函数的新手,所以帮助会很大。提前致谢。import numpy.matlibimport numpy as npdef complicated_matrix_function(M, a, b):    ans1 = np.dot(a, b)    ans2 = np.dot(M, a.T)    out = np.dot(ans1, ans2)    return outM = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])a = np.array([[1, 1, 0]])b = np.array([[-1], [2], [5]])ans = complicated_matrix_function(M, a, b)print(ans)print()print("The size is: ", ans.shape)错误信息是:ValueError:形状(1,1)和(4,1)未对齐:1(dim 1)!= 4(dim 0)
查看完整描述

1 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

错误消息告诉您numpy.dot不知道如何处理 (1x1) 矩阵和 (4x1) 矩阵。但是,由于在您的公式中您只说要相乘,我假设您只想将标量乘积 (a,b) 中的标量与矩阵向量乘积中的向量相乘(嘛)。为此,您可以简单地*在 python 中使用。


所以你的例子是:


import numpy.matlib

    import numpy as np


    def complicated_matrix_function(M, a, b):


        ans1 = np.dot(a, b)

        ans2 = np.dot(M, a.T)

        out = ans1 * ans2


        return out


    M = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])

    a = np.array([[1, 1, 0]])

    b = np.array([[-1], [2], [5]])


    ans = complicated_matrix_function(M, a, b)


    print(ans)

    print()

    print("The size is: ", ans.shape)

导致


[[ 3]

 [ 9]

 [15]

 [21]]


The size is:  (4, 1)

笔记


请注意,这numpy.dot将做很多事情interpretation来弄清楚你想要做什么。因此,如果您不需要您的结果大小为 (4,1),您可以将所有内容简化为:


import numpy.matlib

import numpy as np




def complicated_matrix_function(M, a, b):


    ans1 = np.dot(a, b)

    ans2 = np.dot(M, a) # no transpose required

    out = ans1 * ans2


    return out


M = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])

a = np.array([1, 1, 0]) # no extra [] required

b = np.array([-1, 2, 5]) # no extra [] required


ans = complicated_matrix_function(M, a, b)


print(ans)

print()

print("The size is: ", ans.shape)

导致


[ 3  9 15 21]


The size is:  (4,)


查看完整回答
反对 回复 2022-06-14
  • 1 回答
  • 0 关注
  • 112 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信