【NumPy】配列要素の反転操作
配列要素を特定の軸について反転させる関数の一覧です。
numpy.flip()
numpy.flip(arr, axis=None) は指定した軸 (axis) に沿って要素を 反転 させます。1 次元配列を渡す場合は axis を渡す必要はありません。
# NUMPY_FLIP # In[1] import numpy as np # x = [1 2 3 4 5 6 7 8 9] x = np.arange(1, 10) # xの要素を左右反転 a = np.flip(x) print(a) # [9 8 7 6 5 4 3 2 1]
numpy.reshape() を使って x を 3 × 3 サイズに形状変更しておきます。
# In[2] # xを3×3の配列に形状変更 y = x.reshape(3, 3) print(y) # [[1 2 3] # [4 5 6] # [7 8 9]]
2 次元配列 y を numpy.flip() に渡すと上下左右に反転します。
# In[3] # yの要素を上下左右に反転 b = np.flip(y) print(b) # [[9 8 7] # [6 5 4] # [3 2 1]]
axis=0 を指定すると、行方向の軸に沿って反転させます。
# In[4] # 上下反転 c = np.flip(y, axis=0) print(c) # [[7 8 9] # [4 5 6] # [1 2 3]]
axis=1 なら列方向に沿って要素を反転します。
# In[5] # 左右反転 d = np.flip(y, axis=1) print(d) # [[3 2 1] # [6 5 4] # [9 8 7]]
numpy.fliplr()
numpy.fliplr(m) は 2 次元以上の配列 m を受け取って、行ごとに要素を左右に反転させます。
# NUMPY_FLIP_LR import numpy as np # [[1 0 0] # [0 2 0] # [0 0 3]] x = np.diag([1, 2, 3]) # 行ごとに要素を左右反転 flr = np.fliplr(x) print(flr) # [[0 0 1] # [0 2 0] # [3 0 0]]
numpy.flipud()
numpy.flipud(m) は 2 次元以上の配列 m を受け取って、列ごとに要素を上下に反転させます。
# NUMPY_FLIP_UD import numpy as np # [[1 0 0] # [0 2 0] # [0 0 3]] x = np.diag([1, 2, 3]) # 上下反転 fud = np.flipud(x) print(fud) # [[0 0 3] # [0 2 0] # [1 0 0]]
コメント
【技術英語の豆知識】flip は「軽くはじく」のイメージ
flip の主な意味は「軽くはじく」「素早く投げる」「裏返す」などです。例えば、本を flip するときは「ページを迅速にめくる」ことを意味します。軽い力でページをはじくイメージです。また、flip は感情的な反応を示すこともあります。たとえば、”flip out” というフレーズは、怒ったり興奮したりして制御を失うことを意味します。
flip の名詞としての意味は「軽いはじき」、「軽く投げること」などです。例えば、コインを投げるときの動作を指す場合に flip を使用します。スポーツの技術で使われることもあります。例えば、バスケットボールでボールを素早く投げる動作を flip と呼ぶことがあります。さらに、俗語として、flip は「(物事や意見の)急な変化」を指すこともあります。