修正方法: 整数スカラー配列のみがスカラー インデックスに変換できます。


Python の使用時に発生する可能性のあるエラーは次のとおりです。

 TypeError : only integer scalar arrays can be converted to a scalar index

このエラーは通常、次の 2 つの理由のいずれかで発生します。

1.リストに対して配列のインデックス付けを実行しようとしました。

2.間違った構文を使用して 2 つの行列を連結しようとしました。

次の例は、両方のシナリオでこれらのエラーを回避する方法を示しています。

例 1: リストに対して配列のインデックス付けを実行しようとしました。

次のコードを使用して、凡例とラベルを含む折れ線グラフを matplotlib で作成しようとしているとします。

 import numpy as np

#create a list of values
data = [3, 5, 5, 7, 8, 10, 12, 14]

#choose 3 random values from list
random_values = np. random . choice (range(len(data)), size= 2 )

#attempt to use indexing to access elements in list
random_vals = data[random_values. astype (int)]

#view results
random_vals

TypeError : only integer scalar arrays can be converted to a scalar index

リストに対して配列インデックスを使用しようとしたため、エラーが発生しました。

このエラーを回避するには、まず次のようにnp.array()を使用してリストを NumPy 配列に変換する必要があります。

 import numpy as np

#create a list of values
data = [3, 5, 5, 7, 8, 10, 12, 14]

#choose 3 random values from list
random_values = np. random . choice (range(len(data)), size= 2 )

#attempt to use indexing to access elements in list
random_vals = np. array (data)[random_values. astype (int)]

#view results
random_vals

array([5, 7])

今回は、最初にリストを NumPy 配列に変換したため、エラーなしでリストから 2 つの値をランダムに選択できます。

例 2: 間違った構文を使用して 2 つの行列を連結しようとしました。

次のコードを使用して 2 つの NumPy 行列を連結しようとするとします。

 import numpy as np

#create twoNumPy matrices
mat1 = np. matrix ([[3, 5], [5, 7]])
mat2 = np. matrix ([[2, 4], [1, 8]])

#attempt to concatenate both matrices
n.p. concatenate (mat1, mat2)

TypeError : only integer scalar arrays can be converted to a scalar index

concatenate()関数に行列をタプルとして提供できなかったため、エラーが発生しました。

このエラーを回避するには、次のように二重括弧を使用して行列をタプル形式でconcatenate()関数に提供する必要があります。

 import numpy as np

#create twoNumPy matrices
mat1 = np. matrix ([[3, 5], [5, 7]])
mat2 = np. matrix ([[2, 4], [1, 8]])

#attempt to concatenate both matrices
n.p. concatenate ((mat1, mat2))

matrix([[3, 5],
        [5, 7],
        [2, 4],
        [1, 8]])

今回はエラーなく 2 つの行列を連結することができました。

追加リソース

次のチュートリアルでは、Python の他の一般的なエラーを修正する方法を説明します。

パンダの KeyError を修正する方法
修正方法: ValueError: float NaN を int に変換できません
修正方法: ValueError: オペランドをシェイプでブロードキャストできませんでした

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です