2次元配列の値を行番号や列番号に依存させたい場合、meshgrid()を使って高速化
2次元配列を作るときに、中身の値を行番号や列番号に依存させたい場合がある。
つまり↓のような関係が成り立つようにしたい。
2次元配列の値 = 関数( 行番号, 列番号 )
普通に書くとこうなる。
ここでは配列の値 = 行番号 + 列番号 となるようにしている。
このコードで作ったmatを一応可視化すると、
右下に行くほど値が大きくなっている。
そしてもっといい方法がこちら。
numpy にはmeshgridという便利な関数が用意されていて、forを使わずに書くことができる。
結果は同じなので割愛。
ちなみに、meshgridを使うと処理速度も改善できる。というかmeshgridを使うのはこれが目的だったりする。
nrows, ncols ともに 10,000の場合で計測した結果、
- 前述のコード(for2段階) 31.6 sec
- 後述のコード(meshgrid) 1.8 sec
とその差は明らか。自分でfor構文を書くのは極力やめた方がいいらしい。