scipy.stats.binom.pmf
уже векторизовано. Тем не менее, вы должны broadcast
свои данные, чтобы получить желаемый результат.
broadcast_out = scipy.stats.binom.pmf(left[:, None], C, right)
Валидация
np.random.seed(314)
left = np.arange(5, dtype=float)
right = np.random.rand(5)
C = 5
broadcast_out = scipy.stats.binom.pmf(left[:, None], C, right)
N = len(left)
M = len(right)
matrix = np.zeros((N, M))
for i in range(N):
for j in range(M):
matrix[i][j] = scipy.stats.binom.pmf(left[i], C, right[j])
print(np.array_equal(matrix, broadcast_out))
True