Одна ошибка, с которой вы можете столкнуться при использовании Python:
TypeError: only integer scalar arrays can be converted to a scalar index
Эта ошибка обычно возникает по одной из двух причин:
1. Вы попытались выполнить индексацию массива в списке.
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
Мы получаем сообщение об ошибке, потому что попытались использовать индексацию массива в списке.
Чтобы избежать этой ошибки, мы должны сначала преобразовать список в массив NumPy, используя np.array() следующим образом:
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. Вы попытались объединить две матрицы, используя неправильный синтаксис.
Предположим, мы пытаемся использовать следующий код для объединения двух матриц 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
np.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
np.concatenate ((mat1, mat2))
matrix([[3, 5],
[5, 7],
[2, 4],
[1, 8]])
На этот раз мы можем соединить две матрицы без ошибок.
Дополнительные ресурсы
В следующих руководствах объясняется, как исправить другие распространенные ошибки в Python:
Как исправить KeyError в Pandas
Как исправить: ValueError: невозможно преобразовать число с плавающей запятой NaN в целое число
Как исправить: ValueError: операнды не могли транслироваться вместе с фигурами