
在看一个 numpy 的代码时候遇到了一个,平时见得比较少的操作符符号--“@”, 实例如下:
a1 = np.array([[1,2,3],[4,5,6]]) b1 = np.array([1,2,3]) a1 @ b1 array([14, 32]) 我知道 @xxx 可以作为装饰器,但是我尝试了一下 python 其它数据结构, 都好像不支持, 想知道@到底是什么含义呢?
1 AoEiuV020 2021-02-01 17:13:29 +08:00 np 是什么, |
2 just1 2021-02-01 17:14:21 +08:00 numpy,矩阵乘法 |
3 anzu 2021-02-01 17:14:24 +08:00 |
&nbp; 4 SlipStupig OP @anzu python3.5 以后提供矩阵计算标准库了嘛? |
5 Yienschwen 2021-02-01 17:18:23 +08:00 3.5 引入的一个新运算符 __matmul__, https://www.python.org/dev/peps/pep-0465/ https://docs.python.org/3/reference/datamodel.html#emulating-numeric-types 支不支持取决于这个类型有没有实现这运算符,正如其名它是用来进行矩阵乘法的,一般的数据结构不支持也是自然的 |
6 Ediacaran 2021-02-01 17:18:49 +08:00 __matmul__ 方法 |
8 nonduality 2021-02-01 17:36:08 +08:00 a1 @ b1 等价于 a1.dot(b1),其实我认为这是一个毫无价值、根本没必要引入的新语法。 |
9 rogwan 2021-02-01 17:43:21 +08:00 @nonduality 增加一个价值不大的运算符,副作用更多,觉得 PEP572 引入的符号也没什么必要 |
10 chizuo 2021-02-01 17:48:35 +08:00 @nonduality 在某些情况下还是有不一样的,你可以参见 numpy manual |
11 hsfzxjy 2021-02-01 23:54:20 +08:00 via Android 作为中缀运算符看起来还是比.dot 清晰的 |