#質問
for文とif文を用いてある条件を満たしたときに新しいリストに1を、それ以外の時は0を追加していくコードを作っているのですが、forループの作り方がまずいらしくエラーが出力されて困っています。
#コード
Python
1trigger_level=1.0 2print(timevector.size) 3timelist=list(timevector-1) 4trigger=[] 5for t in range(timelist): 6 if slope_data[6][t]<trigger_level and slope_data[6][t+1]>=trigger_level: 7 trigger=1 8 else: 9 trigger=0
#データ
今回は1枚目の写真の7行目のデータと2枚目のデータだけを使用します。サイズが各行983041と膨大なので初めの一部分だけを写真に載せます。
#エラー
Python
1#for t in range(timelist)にした時に発生 2for t in range(timelist): 3 4TypeError: 'list' object cannot be interpreted as an integer
#試したこと
numpy配列をlistに変換してrange関数を用いた→上記のエラーが発生
rangeを外して、for t in timelistにした→以下のエラーが発生
Python
1 if slope_data[6][t]<trigger_level and slope_data[6][t+1]>=trigger_level: 2 3IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices
for t in len(timevector)に変更→以下のエラーが発生
Python
1for t in len(timelist): 2 3TypeError: 'int' object is not iterable
このように様々なエラーが発生して困っています。
#完成形のイメージ
最終的には以下のようなイメージで処理を行いたいです。
Python
1trigger_level=1.0 2print(timevector.size) 3timelist=list(timevector-1) 4trigger=[] 5for t in range(timelist): 6 7 if slope_data[6][t]<trigger_level and slope_data[6][t+1]>=trigger_level: 8 trigger=1 9 else: 10 trigger=0 11#t=0でslope_data[6][0]とslope_data[6][1]の値を参照し、前者がtrigger_levelより小さいかつ後者がtrigger_levelより大きければtriggerに1を格納 それ以外は0を格納する。以下tの値を983041まで増やして同様の処理を行う。 12#trigger=[0,0,0,...,0,1,0,...0,0,1,0,0]という配列のイメージです
forループの作り方という基本的な内容ですが、誰か解決できる人がいらっしゃいましたらどうかよろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/08 23:44