Я думаю, что вы можете сделать это легко с NumPy.Вот пример правильности
x=[[1, 2], [3,4]]
x=np.array(x)
sum1 = np.sum(x, axis=1).reshape(2,1)
prob = x/sum
Я думаю, что это будет довольно быстро, даже если размер x> 10000.Давайте возьмем 100 функций для 10000 примеров
x=np.random.randint(1, 100, size=1000000)
print(x.shape)
start=time.time()
x=x.reshape(-1, 10000)
sum1=np.sum(x, axis=1).reshape((-1, 1))
prob=x/sum1
stop=time.time()
print(stop-start)
Это занимает около 0,021 сек на моем MBP.