重载标量乘法运算符*
Vector([1, 2, 3]) * x是什么意思?如果x是数字,就是计算标量积(scalar product),结果是一个新Vector实例,各个分量都会乘以x——这也叫元素级乘法(elementwise multiplication)。
#示例1
>>> v1 = Vector([1, 2, 3])
>>> v1 * 10
Vector([10.0, 20.0, 30.0])
>>> 11 * v1
Vector([11.0, 22.0, 33.0])
涉及Vector操作数的积还有一种,叫两个向量的点积(dot product);如果把一个向量看作1×N矩阵,把另一个向量看作N×1 矩阵,那么就是矩阵乘法。NumPy等库目前的做法是,不重载这两种意义的*,只用*计算标量积。
回到标量积的话题。依然先实现最简可用的__mul__和__rmul__方法: