gpt4 book ai didi

python - ValueError : shapes (1, 1) 和 (4,1) 未对齐 : 1 (dim 1) ! = 4(暗淡 0)

转载 作者:行者123 更新时间:2023-12-01 07:10:58 34 4
gpt4 key购买 nike

所以我试图实现 (a * b) * (M * a.T) 但我不断收到 ValueError 。由于我是 python 和 numpy 函数的新手,因此帮助会很棒。提前致谢。

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 = np.dot(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)

错误信息是:

ValueError: shapes (1,1) and (4,1) not aligned: 1 (dim 1) != 4 (dim 0)

最佳答案

错误消息告诉您 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 会进行大量解释来弄清楚您想要做什么。因此,如果您不需要结果的大小为 (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,)

关于python - ValueError : shapes (1, 1) 和 (4,1) 未对齐 : 1 (dim 1) ! = 4(暗淡 0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58221747/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com