【发布时间】:2023-01-11 10:41:41
【问题描述】:
我有一个 $I$ 索引数组 $V = (V_i)_{i \in I}$ of (column) vectors $V_i$,我想逐点(沿着 $i \in I$)乘以一个矩阵$M$。所以我正在寻找一个“向量化”操作,其中单个操作是矩阵与向量的乘法;那是
$W = (M V_i)_{i \in I}$
有没有办法做到这一点?
numpy.dot 不幸的是假设 $V$ 是一个矩阵,而不是 $I$ 索引的向量族,这显然是失败的。
【问题讨论】:
-
你能把你的方程式作为图片发布吗?不幸的是,降价/乳胶方程式不会在 SO 上呈现。
-
另外,您能否提供一些输入 numpy 数组和预期输出
-
在
numpy中,*是逐点或逐元素乘法。@是矩阵乘法 - 具有特定对维度上的乘积之和。np.dot和np.matmul记录了维度是如何配对的。np.einsum是一个更通用的工具,用于指定乘法和求和轴。对于*乘法,适用broadcasting的规则(broadcasting也用于加法和其他运算。 -
您对向量和矩阵的使用可能含糊不清。
numpy有数组,可以是 1d 或 2d(或 0d 或 3d 等)。vector/matrix不是“原生”numpy 术语。二维矩阵可能被认为是“矩阵”,但“向量”可能具有形状 (n,),或 (n,1) 或 (1,n)。 -
为清楚起见,迭代计算的示例通常会有所帮助。
标签: python numpy vectorization linear-algebra