Python ValueError:形状(1,1)和(4,1)未对齐:1(尺寸1)!=4(尺寸0)
所以我试图实现(a*b)*(M*a.T),但我一直得到一个错误。由于我对python和numpy函数还不熟悉,所以帮助将非常大。提前谢谢Python ValueError:形状(1,1)和(4,1)未对齐:1(尺寸1)!=4(尺寸0),python,matrix,Python,Matrix,所以我试图实现(a*b)*(M*a.T),但我一直得到一个错误。由于我对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
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:形状(1,1)和(4,1)未对齐:1(尺寸1)!=4(尺寸0)
错误消息告诉您,
numpy.dot
不知道如何处理(1x1)矩阵和(4x1)矩阵。然而,因为在你的公式中,你只说你想要相乘,我假设,你只想将标量积(a,b)中的标量与矩阵向量积(M.a)中的向量相乘。为此,只需在python中使用*
你的例子是:
import numpy.matlib
将numpy作为np导入
def复杂矩阵函数(M、a、b):
ans1=np.点(a,b)
ans2=np.点(M,a.T)
out=ans1*ans2
返回
M=np.数组([[1,2,3],[4,5,6],[7,8,9],[10,11,12])
a=np.array([[1,1,0]])
b=np.数组([-1]、[2]、[5]])
ans=复杂矩阵函数(M,a,b)
打印(ans)
打印()
打印(“大小为:”,ans.shape)
导致
[[ 3]
[ 9]
[15]
[21]]
The size is: (4, 1)
[ 3 9 15 21]
The size is: (4,)
注意
请注意,numpy.dot
将进行大量的解释
,以确定您想要做什么。因此,如果您不需要结果的大小(4,1),可以将所有内容简化为:
import numpy.matlib
将numpy作为np导入
def复杂矩阵函数(M、a、b):
ans1=np.点(a,b)
ans2=np.dot(M,a)#无需转置
out=ans1*ans2
返回
M=np.数组([[1,2,3],[4,5,6],[7,8,9],[10,11,12])
a=np.array([1,1,0])#不需要额外的[]
b=np.数组([-1,2,5])#不需要额外的[]
ans=复杂矩阵函数(M,a,b)
打印(ans)
打印()
打印(“大小为:”,ans.shape)
导致
[[ 3]
[ 9]
[15]
[21]]
The size is: (4, 1)
[ 3 9 15 21]
The size is: (4,)
感谢您快速明确的回复!欢迎收看StackOverflow。如果这解决了您的问题,您可以将其标记为这样,以便其他人知道此问题已解决。如果你认为这是一个好答案,你也可以投赞成票。