この記事では、pythonのnumpy配列を上下、左右で反転させる方法をご紹介していきます。
実行方法は非常に簡単ですが、実行時に注意する点もあります。
そのあたりまでサンプル配列をつかって詳細解説していきます。
それではさっそくやっていきましょう。
配列を上下反転する方法
まずは配列を上下反転する方法です。
これを実行するには2つの方法があります。
※numpyをnpとしてインポートしている場合
〇反転後配列名=np.flipud(反転前配列名)
〇反転後配列名=np.flip(反転前配列名,0)
1つめのやり方は直接上下反転を指示し、2つめのやり方は反転の指示を出したあとに反転方向を指示しているようなイメージですね。
まぁ基本的には同じなので覚えやすい方を使いましょう。
それではサンプルコードで実際に使ってみましょう。
※今回は1つめのflipudの方を使ってみます。
import numpy as np
aaa1=np.array([[1,2,3],
[4,5,6],
[7,8,9]])
aaa2=np.flipud(aaa1)
print('aaa2')
print(aaa2)
こいつを実行すると以下の結果が得られました。
問題なくコード中の配列の上下が逆になっていますね。
配列を左右反転する方法
次は配列を左右反転する方法です。
これも実行するには2つの方法があります。
※numpyをnpとしてインポートしている場合
〇反転後配列名=np.fliplr(反転前配列名)
〇反転後配列名=np.flip(反転前配列名,1)
ここも先ほどと考え方は同じで、1つめのやり方は直接左右反転を指示し、2つめのやり方は反転の指示を出したあとに反転方向を指示しています。
それではサンプルコードで実際に使ってみましょう。
※今回は2つめのflipの方を使ってみます。
import numpy as np
aaa1=np.array([[1,2,3],
[4,5,6],
[7,8,9]])
aaa3=np.flip(aaa1,1)
print('aaa3')
print(aaa3)
こいつを実行すると以下の結果が得られました。
こちらも問題なくコード中の配列の左右が逆になっていますね。
flipでの配列反転時の注意点
ざっくりと使い方がわかったところで、次はこれらのスキル実行時の注意点をご紹介しておきます。
その注意点というのは、反転前後で配列内のデータは共有化されているという点です。
今回aaa1という配列からaaa2, aaa3という配列を作成したわけですが、これらは並べ方が違うだけで、何を並べるかの参照元は共有化されています。
つまり、反転処理後にaaa1の中を書き換えると、aaa2, aaa3も一緒に書き換わってしまうということです。
まぁ細かいことを言われてもよくわからないと思いますので、実際にやってみましょう。
今回は以下のコードを実行しました。
import numpy as np
aaa1=np.array([[1,2,3],
[4,5,6],
[7,8,9]])
aaa2=np.flipud(aaa1)
print('aaa2')
print(aaa2)
aaa1[0,0]=0
print('aaa2')
print(aaa2)
簡単に処理を解説しておきます。
6行目:読み込んだ配列(aaa1)を上下反転
8行目:反転後の配列を表示
10行目:反転前の配列(aaa1)の数値を書き換え
12行目:反転後の配列(aaa2)を再表示
こいつを実行すると以下の結果が出力されました。
プログラム中にaaa2という配列はいじっていないにも関わらず左下の1が0に書き換わっていますね。
aaa1の配列を書き換えたことによって、データを共有しているaaa2も書き換わってしまったというわけです。
重大なミスにつながりかねないので、ぜひ覚えておきましょう。
このようなミスを避けるためには、別名で配列をコピーしておくなどの処理が必要ですね。
おわりに
というわけで今回はnumpyのflipを使って、配列を上下、左右反転する方法、およびその処理を実行する際の注意点をご紹介しました。
画像の左右反転などにも活用できますので、ぜひ覚えておきましょう。
このように、私のブログでは様々なスキルを紹介しています。
今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。
確実にスキルアップできるはずです。
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
にほんブログ村
それではまた!
Follow @HigashiSalary
コメント