numpy添加如何工作?

blu*_*ote 8 python numpy

我有以下意外行为

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)?

Nat*_*han 1

你的直觉是正确的。Numpy 将每个元素相加。您也可以通过原语看到这种行为:

np.array([1,2,3]) + 1  # [2,3,4]
Run Code Online (Sandbox Code Playgroud)