numpy の名前付き配列を使用すると、次の 2 つのケースで異なる動作が観察されます。
- ケース: 最初に高度なスライスにインデックス配列を使用し、次にサブ配列を名前で選択する
- ケース: 最初にサブ配列を名前で選択し、次にインデックス配列を使用して高度なスライスを行う
次のコードは例を示しています
import numpy as np
a = np.ones(5)
data = np.array(zip(a, a, a), dtype=[("x", float), ("y", float), ("z", float)])
# case 1
# does not set elements 1, 3 and 4 of data to 22
data[[1, 3, 4]]["y"] = 22
print data["y"] # -> [ 1. 1. 1. 1. 1.]
# case 2
# set elements 1, 3 and 4 of data to 22
data["y"][[1, 3, 4]] = 22
print data["y"] # -> [ 1. 22. 1. 22. 22.]
2 つの印刷コマンドの出力は、[ 1. 1. 1. 1. 1.] と [ 1. 22. 1. 22. 22.] です。要素を設定するときに、選択の順序を変更すると結果が異なるのはなぜですか?