リスト
前回、Pythonでゼロ交差点(Zero Crossing)の検出方法を紹介しました。
あわせて読みたい


【Python】ゼロ交差点の検出:Zero Crossing
Zero Crossing 前回、SciPyを使ったピーク検出の方法(find_peaks)を紹介しました。 今回はゼロ交差というY値がゼロになる点を検出する方法(Zero Crossing)を紹介し…
今回はリストの要素を飛び飛びに取得する方法を紹介します。
それでは始めていきましょう。
リストの要素をX個おきに取得
まずは今回使用するリストを作っていきましょう。
ということでrange関数を使って0から99までのリストを作成してみました。
val_list = range(100)
print(*val_list)
実行結果
0 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 26 27 28 29 30 31 32 33 34 35 36 37 38
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
93 94 95 96 97 98 99
「*リスト」でリストをアンパックしています。
詳しくはこちらの記事をどうぞ。
あわせて読みたい


【Python基礎】アスタリスク(*)を使ったリストのアンパック
リスト 前回、matplotlibでレーダーチャートを作成する方法を解説しました。 今回はリストのアンパックに関して解説していきます。 Pythonでプログラムを書いていると非…
このリストの要素をX個おきに取得する場合、「リスト[::X]」とします。
5個おきに取得するのなら、「リスト[::5]」です。
val_list = range(100)
val_list_1 = val_list[::5]
print(*val_list_1)
実行結果
0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95
ちなみに最初の2つのコロンは範囲を示しています。
そのため特定の範囲(A、B)でX個おきに要素を取得する場合は「リスト[A:B:X]」となります。
val_list = range(100)
val_list_2 = val_list[20:70:5]
print(*val_list_2)
実行結果
20 25 30 35 40 45 50 55 60 65
範囲の開始と終了はどちらかだけ指定するのでも大丈夫です。
val_list = range(100)
val_list_3 = val_list[20::5]
print(*val_list_3)
実行結果
20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95
val_list = range(100)
val_list_4 = val_list[:70:5]
print(*val_list_4)
実行結果
0 5 10 15 20 25 30 35 40 45 50 55 60 65
2次元のリストで要素をX個おきに取得
次に2次元のリストの場合を見てみましょう。
まず2次元のリストにするにはNumPyの「resize([行, 列])」を使います。
import numpy as np
val_list = np.array(range(100))
val_list.resize([10, 10])
print(val_list)
実行結果
[[ 0 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 26 27 28 29]
[30 31 32 33 34 35 36 37 38 39]
[40 41 42 43 44 45 46 47 48 49]
[50 51 52 53 54 55 56 57 58 59]
[60 61 62 63 64 65 66 67 68 69]
[70 71 72 73 74 75 76 77 78 79]
[80 81 82 83 84 85 86 87 88 89]
[90 91 92 93 94 95 96 97 98 99]]
これをfor文で繰り返しつつ、「リスト[::X]」で要素を取得していきます。
import numpy as np
val_list = np.array(range(100))
val_list.resize([10, 10])
val_list_new = []
for row in val_list[::2]:
val_list_new.append(row[::2])
print(val_list_new)
実行結果
[array([0, 2, 4, 6, 8]),
array([20, 22, 24, 26, 28]),
array([40, 42, 44, 46, 48]),
array([60, 62, 64, 66, 68]),
array([80, 82, 84, 86, 88])]
リスト内包表記で書くとこんな感じになります。
import numpy as np
val_list = np.array(range(100))
val_list.resize([10, 10])
val_list_new = [row[::2] for row in val_list[::2]]
print(val_list_new)
実行結果
[array([0, 2, 4, 6, 8]),
array([20, 22, 24, 26, 28]),
array([40, 42, 44, 46, 48]),
array([60, 62, 64, 66, 68]),
array([80, 82, 84, 86, 88])]
ということでリスト内の要素を飛び飛び(X個おき)で取得する方法でした。
次回はPythonでデータの補完(interpolation)をする方法を紹介します。
あわせて読みたい


【SciPy】データを補完(interpolation)する方法 [Python]
補完(interpolation) 前回、Pythonでリストの要素を飛び飛び(X個おき)に取得する方法を紹介しました。 今回はデータを補完(interpolation)する方法を紹介します。…
ではでは今回はこんな感じで。
コメント