Pythonでは、2次元配列や画像などで斜め線を扱う方法がいくつかあります。ここでは、その中でも特に有用な方法をいくつか紹介します。
2次元配列で斜め線を取得する
2次元配列で斜め線にあたる要素を取得するには、numpy.diag()
関数を使用します。この関数は、第2引数を指定しない場合(デフォルトはk=0
)は対角成分を返します。k=n
とした場合、n個上の対角成分の値を返します。k=-n
とした場合、-n個下の対角成分の値を返します。
import numpy as np
array = np.array([
[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25],
])
b = np.diag(array)
print(b) # [1, 7, 13, 19, 25]
b = np.diag(array, k=-2)
print(b) # [11, 17, 23]
b = np.diag(array, k=1)
print(b) # [2, 8, 14, 20]
しかし、この方法では、”\”方向の対角線しか取得できません。”/”方向の対角線を取得するには、numpy.fliplr()
関数を使用して配列を左右反転させてからnumpy.diag()
関数を使用します。
# fliplr() の効果: 配列を左右反転させる。
print(np.fliplr(array))
# [[ 5 4 3 2 1]
# [10 9 8 7 6]
# [15 14 13 12 11]
# [20 19 18 17 16]
# [25 24 23 22 21]]
# 左右反転させた配列の対角成分をとる。
b = np.diag(np.fliplr(array))
print(b) # [5, 9, 13, 17, 21]
b = np.diag(np.fliplr(array), k=-2)
print(b) # [15, 19, 23]
b = np.diag(np.fliplr(array), k=1)
print(b) # [4, 8, 12, 16]
以上がPythonで斜め線を扱う基本的な方法です。これらの方法を活用すれば、2次元配列や画像などで斜め線を効率的に扱うことができます。.