Nei*_*l G 3 python numpy matrix-multiplication python-3.x
我认为这@是该dot方法的简写.什么促使设计决定阻止具有形状的阵列的乘法()?
In [6]: a = np.ones((2,1))
In [7]: a.dot(1)
Out[7]:
array([[ 1.],
[ 1.]])
In [8]: a @ 1
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-8-398cff4c0ec9> in <module>()
----> 1 a @ 1
ValueError: Scalar operands are not allowed, use '*' instead
Run Code Online (Sandbox Code Playgroud)
@是中缀运算符matmul,而不是dot(请注意,这两个函数不等同于更高维数组(高于2D)).
在文档中没有明确说明拒绝标量作为操作数的原因,但似乎很可能这个动机源自PEP 0465,它最初提出引入@作为Python 3.5的中缀运算符.从'语义'部分:
0d(标量)输入引发错误.标量
*矩阵乘法是一种在数学上和算法上与矩阵@矩阵乘法不同的运算,并且已经由元素*运算符覆盖.@因此,允许标量矩阵都需要一个不必要的特殊情况,并且违反了TOOWTDI ["只有一种方法可以做到"].
| 归档时间: |
|
| 查看次数: |
2076 次 |
| 最近记录: |