У меня есть массив, скажем, трехмерный размер (3,3,3):
M = np.arange(27).reshape((3,3,3))
Что я хотел бы достичь, это применить функцию numpy.random.binomial
,как:
X[i,j,k] = (n=M[i,j,k], p=0.5 , size=1)
Это должно быть легко с for
циклами, но для больших массивов не самая лучшая идея.
Возможное решение будет:
def binom(x):
fis = int(np.random.binomial(x,p=0.5,size=1))
return fis
X = np.vectorize(binom)(M)
Работает нормально, но np.vectorize
в основном хорошо замаскированный for
эквивалент, так что не так уж много улучшений для больших массивов.Я уверен, что есть более дешевые и быстрые решения.