Как исправить: только целочисленные скалярные массивы можно преобразовать в скалярный индекс.


Ошибка, с которой вы можете столкнуться при использовании 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
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]])

На этот раз нам удалось объединить две матрицы без каких-либо ошибок.

Дополнительные ресурсы

В следующих руководствах объясняется, как исправить другие распространенные ошибки в Python:

Как исправить ошибку KeyError в Pandas
Как исправить: ValueError: невозможно преобразовать число с плавающей запятой NaN в int.
Как исправить: ValueError: операнды не могут быть переданы с помощью фигур.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *