Я пытаюсь создать трехмерное изображение mat1 из данных, данных мне объектом. Но я получаю ошибку в последней строке: mat1[x,y,z] = mat[x,y,z] + (R**2/U**2)**pf1[l,m,beta]
:Слишком много индексов для массива
IndexError: too many indices for array
Что может быть возможно проблема здесь?
Ниже мой код:
mat1 = np.zeros((1024,1024,360),dtype=np.int32)
k = 498
gamma = 0.00774267
R = 0.37
g = np.zeros(1024)
g[0:512] = np.linspace(0,1,512)
g[513:] = np.linspace(1,0,511)
pf = np.zeros((1024,1024,360))
pf1 = np.zeros((1024,1024,360))
for b in range(0,1023) :
for beta in range(0,359) :
for a in range(0,1023) :
pf[a,b,beta] = (R/(((R**2)+(a**2)+(b**2))**0.5))*mat[a,b,beta]
pf1[:,b,beta] = np.convolve(pf[:,b,beta],g,'same')
for x in range(0,1023) :
for y in range(0,1023) :
for z in range(0,359) :
for beta in range(0,359) :
a = R*((-x*0.005)*(sin(beta)) + (y*0.005)*(cos(beta)))/(R+ (x*0.005)*(cos(beta))+(y*0.005)*(sin(beta)))
b = z*R/(R+(x*0.005)*(cos(beta))+(y*0.005)*(sin(beta)))
U = R+(x*0.005)*(cos(beta))+(y*0.005)*(sin(beta))
l = math.trunc(a)
m = math.trunc(b)
if (0<=l<1024 and 0<=m<1024) :
mat1[x,y,z] = mat[x,y,z] + (R**2/U**2)**pf1[l,m,beta]
Я пробовал pf1 [:, b, beta] = np.convolve (pf [:, b, beta], g), но он по-прежнему дает ту же ошибку. –
См. Ответ, я изменил его. – agold
Спасибо! Я не получаю эту ошибку сейчас. Но теперь я получаю mat1 [x, y, z] = mat [x, y, z] + (R ** 2/U ** 2) ** pf1 [l, m, beta] IndexError: индекс 1024 is за пределы для оси 1 с размером 1024 –