@符号之谜
在Numpy中,看到了@符号,但是无论是google搜索或者baidu搜索,由于@符号是一个特殊字符,所以很难检索到答案。
其实很简单,他就是Numpy库中的一个操作符,在numpy库的说明中,落在numpy.matmul1的条目中。在Python 3.5之后引入,用以执行numpy.matmul。(PEP 465)
说起matmul函数,顾名思义就是矩阵乘法,这个函数其实是大名鼎鼎的numpy.dot点乘的一个子集。
根据dot函数2的说明,numpy.dot(a, b, out=None)
用于两个数组的点乘:
- 若a和b都是1-D一维数组,它就计算向量的内积inner product
- 若a和b都是2-D二维数组,它就执行矩阵乘法matrix multiplication, 此时更推荐使用matmul函数,或使用a@b
- 如果a或b是0-D(标量),它相当于乘法multiply,此时推荐使用numpy.multiply(a, b)或a * b
例
>>> x1 = np.array([2j, 3j])
>>> x2 = np.array([2j, 3j])
>>> x1 @ x2
(-13+0j)
>>> x1 = np.array([2j, 3j])
>>> x2 = np.array([2j, 3j])
>>> np.matmul(x1, x2)
(-13+0j)