【发布时间】:2020-06-14 04:09:06
【问题描述】:
我遇到了一个代码,它执行列表“A”与 numpy 数组“B”的一般点积。
A = [1,2,3,4,5,6]
B = np.arange(18).reshape(3, len(A))
result = np.dot (B,A)
result2 = np.dot (A,B)
np.dot(A,B) 给出错误:“值错误:形状 (6,) 和 (3,6) 未对齐:6 (dim 0) != 3 (dim 0)”
但是,np.dot (B,A) 给出的结果是 [70 196 322]。
你能帮我理解为什么np.dot(B,A) 有效而np.dot(A,B) 无效吗?
理想情况下,我希望点积仅在我的第一个矩阵的列数与第二个矩阵的行数相同时才起作用。
B有3行6列,A有1行6列。所以,我希望 np.dot(B,A) 和 np.dot(A,B) 都不起作用。
【问题讨论】:
-
它的行为符合您的预期,对吧?这里有什么问题?
-
B 有 3 行 6 列,A 有 1 行 6 列。由于 B 的列数不等于 A 中的行数,我希望 np.dot(B,A) 不起作用。
-
numpy 中 N 大小的一维数组不是大小为 1xN 的矩阵。您应该查看文档,了解当第二个参数是一维数组时
np.dot的行为方式:numpy.org/doc/stable/reference/generated/numpy.dot.html -
您阅读文档了吗?他们怎么说一维数组?
标签: python python-3.x numpy