添加列表和NumPy号码

Mad*_*sen 11 python numpy list

如果向列表中添加一个整数,则会得到列表的__add__函数引发的错误(我想):

>>> [1,2,3] + 3
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "int") to list
Run Code Online (Sandbox Code Playgroud)

如果你向NumPy数组添加一个列表,我假设NumPy数组的__add__函数将列表转换为NumPy数组并添加列表

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

但是接下来会发生什么?

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

列表如何知道如何使用NumPy数组处理添加?

Ana*_*mar 12

list不知道如何使用NumPy数组处理添加.即使在[1,2,3] + np.array([3]),它是处理添加的NumPy数组.

数据模型中所述:

  • 对于对象x和y,首先x.__op__(y)尝试.如果未实现或返回NotImplemented,y.__rop__(x)则尝试.如果这也未实现或返回NotImplemented,则引发TypeError异常.但请参阅以下异常:

  • 前一项的异常:如果左操作数是内置类型或新样式类的实例,并且右操作数是该类型或类的正确子类的实例并覆盖基类的__rop__()方法,则右操作数的__rop__()方法在左操作数的__op__()方法之前尝试.

当你这样做

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

内部称之为

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


Lab*_*abo 8

这是因为__radd__np.array 的方法,请查看此链接:http://www.rafekettler.com/magicmethods.html#numeric (段落反射算术运算符).

事实上,当你尝试时[1,2,3].__add__(np.array([3])),它会引发错误,因此np.array([3]).__radd__([1,2,3])被调用.