ななちゃんは猫まねが好き2

人はパンだけで生きるにあらず。でもパンは大事。です。

角度の正規化

import numpy as np

# 角度aと角度に紐づいているデータd
a = np.array([-30, 0, 30, 210, 360])
d = np.array([0.7, 1.0, 0.7, 0.5, 1.0])

# aの要素を0から360度の範囲に
a = np.mod(a, 360)
# a = np.array([330, 0, 30, 210, 0])

# さらに-180から180度の範囲に
a = np.where(a > 180, a - 360, a)
# a = np.array([-30, 0, 30, -150, 0])

# 重複を削る
_a, _i = np.unique(a, return_index = True)
# _a = np.array([-150, -30, 0, 30])
# _i = np.array([3, 0, 1, 2])

# 同じ順番でデータも並べ替える
_d = d[_i]
# _d = np.array([0.5, 0.7, 1.0, 0.7])

# さらに角度の順番を降順にする
_i = np.argsort(_a)[::-1]
_a = _a[_i]
_d = _d[_i]
# _a = np.array([30, 0, -30, -150])
# _d = np.array([0.7, 1.0, 0.7, 0.5])