画像処理などでは要素の値を配列全体で反転したいときがある。このようなときに役に立つのがflip, fliplr, flipudである。
flipud
flipudは上下反転する。
第一パラメータには反転したい配列を渡す。結果は上下反転した配列が戻ってくる。
import numpy as np z = np.arange(12) z1=z.reshape(3,4) print(z1) # [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] print(np.flipud(z1) [[ 8 9 10 11] [ 4 5 6 7] [ 0 1 2 3]]
この結果は[::-1, ::]でスライスした結果と同じである。
print(z1[::-1,]) # [[ 8 9 10 11] [ 4 5 6 7] [ 0 1 2 3]]
fliplr
flipudは左右反転する。
第一パラメータには反転したい配列を渡す。結果は左右反転した配列が戻ってくる。
import numpy as np z = np.arange(12) z1=z.reshape(3,4) print(z1) # [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] print(np.flipnr(z1)) #[[ 3 2 1 0] [ 7 6 5 4] [11 10 9 8]]
この結果は[::,::-1]でスライスしたのと同じ結果である
print(z1[::,::-1]) # [[ 3 2 1 0] [ 7 6 5 4] [11 10 9 8]]
flip
flipは配列の要素を上下反転する。
第一パラメータに反転したい配列を引き渡す。この結果上下反転した配列が戻ってくる。
3×4の配列を上下反転した例が以下になる。
z = np.arange(12) z1=z.reshape(3,4) print(z1) # [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] print(np.flip(z1) # [[11 10 9 8] [ 7 6 5 4] [ 3 2 1 0]]
上下・左右すべて反転しているのがわかる。
flipは配列を[::-1,::-1]でスライスしたのと同じ結果となる。
print(z1[::-1, ::-1]) # [[11, 10, 9, 8], [ 7, 6, 5, 4], [ 3, 2, 1, 0]]
flipは引数axisにより反転する軸を指定できる。flip(配列)はflip(配列, (0,1))と同じである。
print(np.flip(z1, (0,1))) # [[11 10 9 8] [ 7 6 5 4] [ 3 2 1 0]]
flip(配列, 0)はflipud, flip(配列, 1)はfliplrと同じである。