(Решено. См. Ответ ниже) Я учу себя Python при подготовке к школьному проекту. Я столкнулся со следующей ошибкой, которую не могу понять, как исправить:
IndexError: допустимыми являются только целые числа, срезы (:
), многоточие (...
), numpy.newaxis (None
) и целые или логические массивы
Вот код, который я пытаюсь запустить (отредактировал его, основываясь на комментариях)
from sympy import *
from sympy.abc import i
from mpmath import *
import numpy as np
np.set_printoptions(suppress=True)
N = 3
M = np.zeros(shape=(N, N))
for n in range(0, N):
M[0, n] = fac(n) # mpmath.fac
for m in range(1, N):
for n in range(0, N):
M[m, n] = (Sum(M[m - 1, i], (i, 0, n + 1))) / (n+1)
print(M)
По сути, я хочу указать размерность для массива и первую строку для массива. Затем я хочу построить оставшиеся записи в массиве определенным образом (суммирование по Холдеру, если вы знаете об этой технике суммирования).
Я просмотрел различные другие вопросы переполнения стека с этой конкретной ошибкой, но эти вопросы были за пределами моего текущего знания или не совсем решали мою проблему. Я возился со многими параметрами и выделил проблему в строке 13. В частности, как только я помещаю «i» в M [m-1, i], я получаю сообщение об ошибке. Мой код запускается, если вместо «i» я ставлю любое число меньше размера, но это не та конструкция, которая мне нужна.
Например, запись M[2,1]
должна быть построена как:
M[2,1] = (M[1,0] + M[1,1]) / 2
То, что я думал, соответствовало сумме, которую я написал. Как мои индексы стали чем-то отличным от положительного целого числа?
Спасибо!