Вопрос об индексации Python — «IndexError: слишком много индексов для массива: массив одномерный, но 2 были проиндексированы»

Пожалуйста, может кто-нибудь сказать мне, почему следующий код не работает, и каковы наилучшие обходные пути для этого?

Choices # variable containing True or False in each element.
Choices.shape = (18978,)
BestOption # variable containing 1 or 2 in each element.
BestOption.shape = (18978, 1)

Choices[BestOption==1] # I want to look up the values in choices for all instances where BestOption is 1.

Я получаю следующую ошибку:

IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed
BestOption==1 — это логический массив той же формы, что и BestOptions. Такой массив, когда он используется в качестве индекса, должен соответствовать по форме либо всему массиву, либо одному из его измерений. Другими словами, чтобы проиндексировать (n,) массив, вам нужно использовать (n,) логическую маску, а не (n,1). Возможно, вам придется просмотреть некоторые основы numpy по измерениям и индексации.
hpaulj 17.11.2022 01:19
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

BestOption — это одномерный «вектор-столбец», который на самом деле состоит из множества строк и обрабатывается как двумерная матрица. Вы можете просто преобразовать его обратно в одномерный «вектор-строку»:

Choices[BestOption.reshape(-1)==1]

Другие вопросы по теме