У меня есть следующий массив numpy с именем histarr с формой 1, 13
array([0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0], dtype=uint32)
Я хочу получить массив, который дает мне позиции, где находятся единицы, поэтому я использовал np.where
where_are_ones_arr = np.where(histarr == 1)
Результат:
(array([1, 2, 4, 5, 6], dtype=int32),)
Некоторое время я был в замешательстве, но потом я проверил тип и понял, что where_are_ones_arr
не массив, а на самом деле кортеж, поэтому, если бы я хотел получить массив, который я использовал:
where_are_ones_arr[0]
Результат:
array([1, 2, 4, 5, 6], dtype=int32)
Теперь все в порядке, но мне показалось невероятным, что я не могу получить это в одной строке, поэтому я огляделся и попробовал:
where_are_ones_give_me_only_array = histarr[np.where(histarr == 1)]
Но он выплевывает:
array([1, 1, 1, 1, 1], dtype=uint32)
Чего я не хочу и что я могу объяснить? Что я не понимаю?