PythonでNumPyを使ってマスクした配列の要素を別の配列に代入したい!
概要
今回の記事では、PythonでNumPyを使ってマスクした配列の要素を別の配列に代入する手順を掲載する。
仕様書
環境
- Python 3.11.5
手順書
下記のような感じでsrc
とdist
とmask
という2次元配列があって、maskで1
となってる位置のdist
の要素をsrc
の要素に代入したい。
src = np.array([
[1,2,3],
[4,5,6],
[7,8,9],
])
dist = np.array([
[11,22,33],
[44,55,66],
[77,88,99],
])
mask = np.array([
[1,0,1],
[0,1,0],
[1,0,1],
])
こんな感じで出力したい。
[[11 2 33]
[ 4 55 6]
[77 8 99]]
実際に動くコードはこんな感じ。
import numpy as np
import copy
src = np.array([
[1,2,3],
[4,5,6],
[7,8,9],
])
dist = np.array([
[11,22,33],
[44,55,66],
[77,88,99],
])
mask = np.array([
[1,0,1],
[0,1,0],
[1,0,1],
])
result = copy.deepcopy(src)
result[mask == 1] = dist[mask == 1]
print(result)
numpy.array
では[]
の中で条件指定ができる。[mask == 1]
は配列mask
の値が1
になってる位置の要素を指定してる。
今回はsrc
の値を変更したくないので、copy.deepcopy
を使ってコピーの配列を作ってその配列を処理した。
まとめ(感想文)
NumPyってめちゃ便利だと思う今日この頃。
for
を使って実装せずに済んでめちゃ楽ちん。