Сумма по значениям в массиве всегда может быть преобразована во внутренний продукт, который оптимизирован для numpy. Как было предложено здесь, я не совсем понимаю контекст вашего вопроса без примеров, но вы должны быть в состоянии сделать что-то вроде следующего:
np.random.seed(1)
# your examples
M = 2
length_of_tree,reps = 100,100
omega,Z = 2,2
# a random matrix of values of shape 100,2,2
quad = np.random.normal(0,1,size=(100,2,2))
# useful initializations
quadT = quad.T
dummy = np.ones(shape=(100,))
for i in range(length_of_tree):
# option 1
potential_ways = np.zeros((M, 2))
for m in range(omega):
for s in range(Z):
potential_ways[m][s] = sum([quad[r][m][s] for r in range(reps)])
# option 2
potential_ways = quadT.dot(dummy).T