我有以下意外行为
import numpy as np
class Test:
def __radd__(self, other):
print(f'value: {other}')
[1,2,3] + Test()
# prints: value: [1,2,3]
np.array([1,2,3]) + Test()
# prints
# value: 1
# value: 2
# value: 3
Run Code Online (Sandbox Code Playgroud)
我希望第二次添加的行为方式与第一次相同,但事实并非如此.我能看到的唯一合乎逻辑的解释是,numpy +运算符首先以某种方式遍历参数,并尝试将它们中的每一个添加到Test(),并且第二个添加(int + Test)回落到Test.__radd__
所以
a + b在numpy工作np.add(a, b)?你的直觉是正确的。Numpy 将每个元素相加。您也可以通过原语看到这种行为:
np.array([1,2,3]) + 1 # [2,3,4]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
872 次 |
| 最近记录: |