首页 > 解决方案 > += 在python中将numpy数组添加到标量时的行为

问题描述

我有一个标量变量,想添加一个 numpy 数组。我有点马虎,编程如下

import numpy as np
x = 5
x += np.ones(5)
print(x)

这段代码确实产生[6. 6. 6. 6. 6.]了,但事后我不明白为什么。毕竟,我认为这+=不会x在内存中创建新位置,而只是将值添加到内存中的同一位置。但是我添加的内容(长度为 5 的数组)需要在内存中更大的位置。那么为什么会这样呢?它应该工作吗?是保存吗?

标签: pythonnumpy

解决方案


__iadd__()没有为int类型实现,所以它回退到x = x + np.ones(5)

例如,如果 x 是具有iadd () 方法的类的实例,则 x += y 等价于 x = x.__iadd__(y) 。否则,将考虑 x.__add__(y) 和 y.__radd__(x),与 x + y 的评估一样。

文件


推荐阅读