我在匹配Numpy在线性代数中执行点积和向量表示时所期望的形状方面有一些困难。
假设我有一个矩阵和两个由Numpy数组表示的列向量:
import numpy as np
A = np.array([[1,2],
[3,1],
[-5,2]])
x = np.array([[0],
[2]])
y = np.array([[-2],
[0],
[3]])
字符串
我想计算Axꞏy
,Ax
是一个矩阵乘法,ꞏ
是点积。这是行不通的:
# a = Axꞏy
a = (A @ x).dot(y)
型
形状(3,1)和(3,1)未对齐:1(dim 1)!= 3(dim 0)Ax
:
[[4],
[2],
[4]]
型
实际上是一个列向量,两个列向量的点积是标量:-8+0+12=4
,这是我期望的结果。
使用定义的矢量,需要什么样的正确操作或整形?
1条答案
按热度按时间tyky79it1#
你不能计算两个
(3, 1)
数组之间的点积,只有当A
和B
的形状是(n, k)
和(k, m)
时,点积A @ B
才有效。看起来你想要:
字符串
输出:
[[4]]
或标量:
型
输出:
4
@
和dot
是等效的。*在给定形状的情况下,其他有效的操作:
型