Пожалуйста, может кто-нибудь сказать мне, почему следующий код не работает, и каковы наилучшие обходные пути для этого?
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
— это одномерный «вектор-столбец», который на самом деле состоит из множества строк и обрабатывается как двумерная матрица. Вы можете просто преобразовать его обратно в одномерный «вектор-строку»:
Choices[BestOption.reshape(-1)==1]
BestOption==1
— это логический массив той же формы, что иBestOptions
. Такой массив, когда он используется в качестве индекса, должен соответствовать по форме либо всему массиву, либо одному из его измерений. Другими словами, чтобы проиндексировать (n,) массив, вам нужно использовать (n,) логическую маску, а не (n,1). Возможно, вам придется просмотреть некоторые основы numpy по измерениям и индексации.