創屋ぷれす

Python コード 備忘録 numpy3 ある値で連続している個所の検索

list_a = [1,1,1,2,2,2,2,3,4,5,1]
といったリストがあるとします

この中から1が連続している個所を抽出したい場合です。

Python コード 備忘録 numpy2 比較
で記述したのnp.whereの機能を使います

■numpy arrayに格納します

>> list_a = [1,1,1,2,2,2,2,3,4,5,1]
>> np.array(list_a)
array([1, 1, 1, 2, 2, 2, 2, 3, 4, 5, 1])

■listの中から 値が1の場所を検索
indexが取れます

>> np.where(np_a == 1)
(array([ 0, 1, 2, 10], dtype=int32),)

■indexを保持しておきます
np_index = np.where(np_a == 1)[0]

■np_indexの長さの連番の行列を作成します

>> np.array(range(len(np_index)))
np_renban = array([0, 1, 2, 3])

■np_indexの元は Listのindexになので、連番のListを引くと 連続している個所は同じ値になります。

>> np_index – np_renban
array([0, 0, 0, 7])

for文を使わずに書けるってすばらしい!
(速度は比較していませんが。。。)

創屋のホームページはこちらから

Comments are closed.