python - += 在python中将numpy数组添加到标量时的行为
问题描述
我有一个标量变量,想添加一个 numpy 数组。我有点马虎,编程如下
import numpy as np
x = 5
x += np.ones(5)
print(x)
这段代码确实产生[6. 6. 6. 6. 6.]
了,但事后我不明白为什么。毕竟,我认为这+=
不会x
在内存中创建新位置,而只是将值添加到内存中的同一位置。但是我添加的内容(长度为 5 的数组)需要在内存中更大的位置。那么为什么会这样呢?它应该工作吗?是保存吗?
解决方案
__iadd__()
没有为int
类型实现,所以它回退到x = x + np.ones(5)
例如,如果 x 是具有iadd () 方法的类的实例,则 x += y 等价于 x = x.__iadd__(y) 。否则,将考虑 x.__add__(y) 和 y.__radd__(x),与 x + y 的评估一样。
推荐阅读
- emacs - Emacs 的 *Messages* 缓冲区中的 Flycheck 警告未正确显示
- twilio-api - 如何获取加入 Twilio 的 whatsapp 沙箱的参与者列表
- c++ - 析构函数c ++后的分段错误
- python - 在 Windows 10 上的 Pycharm 中安装 Openpyxl 包时出现 TLS/SSL 错误
- swift - 如何根据 UI 对象确定结构的返回值
- haskell - 我的 Haskell 代码中的缩进/布局错误在哪里?
- ios - 如果单击特定的 CollectionViewCell 做某事
- r - 在R中使用正则表达式删除字符串中的特定子字符串
- python - python中字符串的比较(从文件中读取)不起作用
- java - SQL Developer V19 - 从连接 XML 中解密密码