IndexError: index 0 is out of bounds for axis 0 with size 0

Python
本ページはプロモーションが含まれています

はじめに

Pythonで多次元配列を操作している時に

IndexError: index 0 is out of bounds for axis 0 with size 0

というエラーに遭遇しました。
今回はその時の原因と対処方法、さらにソースコードの例を備忘録の為に残します。

エラーの原因と対処法

エラー

冒頭でも書きましたが、まず発生したエラーです。
エラーは次のようなものです。

IndexError: index 0 is out of bounds for axis 0 with size 0

というものです。
日本語で訳すと
インデックスエラー: インデックス0は、サイズが0の軸0に対して範囲外です
となります。

ちょっとこれだけだと分かりにくいですね。

原因とサンプルソース

原因

このエラーは、多次元配列(例えばnumpy配列やpandasのデータフレーム)を利用中に存在しない要素にアクセスしようとしたときに発生します。

具体的には、このエラーメッセージでは、サイズが0(つまり要素が一つもない)の配列の0番目の要素にアクセスしようとしています。

エラーが発生するソースコード

次がエラーが発生するソースコードです。

import numpy as np

arr = np.array([])  # 要素が一つもない配列
print(arr[0])  # 存在しない0番目の要素にアクセスしようとしてエラー

これを実行すると

4行目で「IndexError: index 0 is out of bounds for axis 0 with size 0」が表示されます。

修正したソースコード

次は修正したソースコードになります。

import numpy as np

arr = np.array([1, 2, 3])  # 要素が存在する配列
print(arr[0])  # 0番目の要素にアクセスする

これを実行すると

1

と問題なく実行されます。

さいごに

今回は存在しない配列の要素にアクセスしてエラーになるケースでした。
配列などの初期処理段階で空の配列を作成したりするとこのエラーに遭遇する可能性があります。
ループ処理など存在しない要素にアクセスしないように注意しないといけないですね。

この記事がお役に立ったのなら嬉しいです。
最後までお読みいただきありがとうございます。

タイトルとURLをコピーしました