Моя точка зрения заключается в том, что поведение булевых расширенных индексов и их статус устаревания (или его отсутствие) могут измениться в недалеком будущем.

ится кэтот вопрос, Я сталкивался с поведением индексации через логические массивы и вещание я не понимаю. Мы знаем, что можно индексировать массив NumPy в двух измерениях, используя целочисленные индексы и широковещательную рассылку. Это указано вдокументы:

a = np.array([[ 0,  1,  2,  3],
              [ 4,  5,  6,  7],
              [ 8,  9, 10, 11]])

b1 = np.array([False, True, True])
b2 = np.array([True, False, True, False])

c1 = np.where(b1)[0]  # i.e. [1, 2]
c2 = np.where(b2)[0]  # i.e. [0, 2]

a[c1[:, np.newaxis], c2]  # or a[c1[:, None], c2]

array([[ 4,  6],
       [ 8, 10]])

Однако то же самое не работает для логических массивов.

a[b1[:, None], b2]

IndexError: too many indices for array

Альтернативаnumpy.ix_ работает как для целых чисела также Булевы массивы. Это, кажется, потому чтоix_ выполняет специальные манипуляции для логических массивов, чтобы обеспечить последовательное лечение.

assert np.array_equal(a[np.ix_(b1, b2)], a[np.ix_(c1, c2)])

array([[ 4,  6],
       [ 8, 10]])

Поэтому мой вопрос: почему вещание работает с целыми числами, а не с логическими массивами? Это поведение задокументировано? Или я неправильно понимаю более фундаментальную проблему?

Ответы на вопрос(1)

Ваш ответ на вопрос