Вы можете создать объект среза и выбрать желаемое измерение в этом:
import numpy as np
a = np.arange(18).reshape((3,2,3))
b = np.array([1,3])
ss = [None for i in range(a.ndim)]
ss[1] = slice(None) # set the dimension along which to broadcast
print ss # [None, slice(None, None, None), None]
c = a*b[ss]
Как правильно приостановить основной поток.
blockquote>Вы не . Основной поток (также называемый потоком пользовательского интерфейса) никогда не должен блокироваться.
Вы говорите, что у вас есть фоновая работа на месте. Условие должно рассчитываться в фоновом потоке как часть работы, и после того, как будут выполнены любые результаты, переданные обратно в поток пользовательского интерфейса.