相关疑难解决方法(0)

numpy的就地操作(例如`+ =`)如何工作?

基本问题是:在做什么时会发生什么a[i] += b

鉴于以下内容:

import numpy as np
a = np.arange(4)
i = a > 0
i
= array([False,  True,  True,  True], dtype=bool)
Run Code Online (Sandbox Code Playgroud)

我明白那个:

  • a[i] = x是相同的a.__setitem__(i, x),它直接分配给指示的项目i
  • a += x是一样的a.__iadd__(x),它不到位此外

但是当我这样做时会发生什么:

a[i] += x
Run Code Online (Sandbox Code Playgroud)

特别:

  1. 这是一样的a[i] = a[i] + x吗?(这不是就地操作)
  2. 在这种情况下,如果i是:
    • 一个int指数,或
    • 一个ndarray,或
    • 一个slice对象

背景

我开始深入研究这个问题的原因是我在处理重复索引时遇到了非直观的行为:

a = np.zeros(4)
x = np.arange(4)
indices = np.zeros(4,dtype=np.int)  # duplicate indices
a[indices] …
Run Code Online (Sandbox Code Playgroud)

python numpy

14
推荐指数
3
解决办法
7504
查看次数

标签 统计

numpy ×1

python ×1