Гамма-случайные числа, MATLAB и Python

У меня есть эта строка кода в программе MATLAB:

x(:,i) = gamrnd(a(i),1,dim,1)

Мне было интересно, как я могу написать эту же строку на Python. Я думаю, что эквивалентное утверждение:

gamma.rvs(a, size=1000) 

Однако это продолжает давать мне ошибку индекса.

Вот мой полный код для этой части:

x = np.array([])
for i in range(N-1):
    # generates dim random variables
    x[:, i] = gamma.rvs(a[i], dim-1)    # generates dim random variables
                                            # with gamma distribution

Спасибо за помощь!

Пожалуйста, опубликуйте фактическую ошибку, которую вы видите, и время ее возникновения. gamma.rvs(a, size=1000) должен просто работай.

Horia Coman 17.08.2018 23:55

Проблема в x[:, i]. Такого индекса не существует.

Zain Patel 18.08.2018 00:00
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
2
369
1

Ответы 1

Вы инициализировали x = np.array([]), а затем попытались получить доступ к x[:, 0], которого не существует, отсюда и Index Error. Вместо этого вы захотите добавить:

x = np.array([])
for i in range(N-1):
    np.append(x, gamma.rvs(a[i], dim - 1))

Документацию для np.append можно найти здесь.

np.append крайне неэффективен. Кроме того, это даст плоский массив, а не форму, которую ищет вопрошающий.
user2357112 supports Monica 18.08.2018 02:20

Другие вопросы по теме