基本的な質問は次のとおりa[i] += b
です。
以下を考えると:
import numpy as np
a = np.arange(4)
i = a > 0
i
= array([False, True, True, True], dtype=bool)
という事は承知しています:
a[i] = x
a.__setitem__(i, x)
で示される項目に直接割り当てると同じです。i
a += x
は と同じでa.__iadd__(x)
、その場で加算を行います
しかし、私が行うとどうなりますか:
a[i] += x
具体的には:
- これは と同じ
a[i] = a[i] + x
ですか? (これはインプレース操作ではありません) - この場合、次の場合に違いがありますか
i
。int
インデックス、または- 、
ndarray
または slice
オブジェクト_
バックグラウンド
私がこれを掘り下げ始めた理由は、重複したインデックスを操作するときに非直感的な動作に遭遇したためです。
a = np.zeros(4)
x = np.arange(4)
indices = np.zeros(4,dtype=np.int) # duplicate indices
a[indices] += x
a
= array([ 3., 0., 0., 0.])
この質問の重複インデックスに関するさらに興味深いもの。