Translate
pythonでプログラムを書いているうちに何度もよく遭遇してしまうエラーがまた出てきたので、ここで共有しておこうと思います。
個人的な体感としては、only integer scalar arrays can be converted to a scalar indexエラーは、numpyとかでデータの範囲を切り出すときによく見抱えるエラーでした。
実際私が良く書くnumpyを使って特定のデータの範囲をあらかじめ用意しておいたデータの配列から読み取ってやるときに出てきます。
forループの中で何度もデータの範囲を切り出すときに、あらかじめループ外に配列を作っておきそこからデータを読み取るといったあれです。
体感として、only integer scalar arrays can be converted to a scalar indexエラーは「本来整数を入れないといけない場所に配列をぶち込んでいる」といった時に起きてしまっているように感じます。事実こんな感じにコード書いてエラー履いた時は、int型を指定してやることで直ることが多いです。具体的には
data = data[range1[1]:range1[2]]
こういった範囲指定の書き方を
data = data[int(range1[1]):int(range1[1])]
みたいな書き方に変えると、only integer scalar arrays can be converted to a scalar indexが起きにくいという実感はあります。
余談ではありますが、他にはrange1の中身がfloat型で中に少数を含んだ値が入っていたりすると、同じようなエラーが起こることがあります。
そういう時には、こんな感じで書き替えてやるとさらにエラーが起こる確率が減ります。
data = data[int(round(range1[1])):int(round(range1[1]))]
pythonに元から入っているround関数を使ってあらかじめ四捨五入をしてやると、配列の指定の際に小数点が含まれることがなくなります。
この記事をシェアする
この記事の関連記事

【初心者向け】pythonの行の抽出などの処理はpandasがとても便...

【初心者向け】python で座標データから角度を求める方法【nump...

python でcsvファイルを読んで動くループ回路を作る際の方法【超...

pythonでループ回路の結果のデータをcsvにそれぞれ保存する方法【...
.jpg)
M5Stack Core2のPaHubの作例。二個のIMUの姿勢角を表...
.jpg)
M5Stack Core2を使っていて遭遇したエラー。単純にケーブルの...
.jpg)
久しぶりにM5stack Core2を動かしたときにコンパイルできない...

【matplotlib】matplotlibでダークモード的なスタイル...