Python выдает ошибку IndexError: неверный индекс для скалярной переменной — это «ошибка времени компиляции, которая возникает при попытке доступа к элементу массива или списка с использованием неправильной позиции индекса или уровня измерения([][])».
Если вы попытаетесь получить доступ к элементу из 2D-массива, используя три индекса([][][]), вы получите ошибку IndexError: недопустимый индекс для ошибки скалярной переменной.
Воспроизведение ошибки
|
1 2 3 4 5 |
import numpy as np value = np.array([[21, 19], [11, 18], [21, 46]]) print("The value is ", value[0][1][2]) |
Выход
|
1 |
IndexError: invalid index to scalar variable. |
Приведенный выше код сгенерирует ошибку «IndexError: недопустимый индекс для скалярной переменной», поскольку переменная значения представляет собой двумерный массив с размером(3,2), и у нее есть только два индекса для доступа к элементам: первый для строк и второй для столбцов.
Мы пытаемся получить доступ к дополнительному индексу, используя значение[0][1][2], где первый индекс 0 предназначен для строк, второй индекс 1 предназначен для столбцов, а третий индекс 2 недопустим, поскольку значение является 2D массив.
Как исправить IndexError: неверный индекс скалярной переменной
Существуют следующие методы исправления IndexError в Python.
- Способ 1: доступ к элементу, используя только два индекса: «значение [0][1]».
- Способ 2: доступ к элементу с использованием одного индекса: «значение[0], значение[1], значение[2]».
Способ 1: использование двух индексов
Чтобы получить доступ к определенному значению из двумерного массива, используйте синтаксис value[0][1].
|
1 2 3 4 5 6 7 |
import numpy as np value = np.array([[21, 19], [11, 18], [21, 46]]) element = value[0][1] print("The element is:", element) |
Выход
|
1 |
The element is: 19 |
В приведенном выше коде доступ к одному элементу осуществляется с использованием индексов(0,1), соответствующих элементу в первой строке и втором столбце двумерного массива.
Этот код не вызовет ошибку «IndexError: неверный индекс скалярной переменной», поскольку индексы(0,1) действительны для двумерного массива.
Метод 2: использование одного индекса
Чтобы получить доступ к определенному массиву из двумерного массива, используйте синтаксис value[0].
|
1 2 3 4 5 6 7 8 9 10 11 |
import numpy as np value = np.array([[21, 19], [11, 18], [21, 46]]) element_first = value[0] element_second = value[1] element_third = value[2] print("The first element is:", element_first) print("The second element is:", element_second) print("The third element is:", element_third) |
Выход
|
1 2 3 |
The first element is: [21 19] The second element is: [11 18] The third element is: [21 46] |
В приведенном выше коде доступ к element_first осуществляется с использованием индекса 0, соответствующего элементу в первой строке двумерного массива.
Доступ к элементу_второй осуществляется по индексу 1, а доступ к элементу_третьему осуществляется по индексу 2.
Код не выдаст ошибку «IndexError», поскольку индексы 0, 1 и 2 являются допустимыми индексами для двумерного массива.
