циклически перебирая суммируемый массив, суммируя вещи в другой массив - PullRequest
0 голосов
/ 19 мая 2018

я пытаюсь перебрать массив nndy и возникла проблема

, первая часть кода ниже просто делает систему координат и случайные числа

import numpy as np
import math
N = 100
h, i = np.linspace(-20., 20., N), np.linspace(-20., 20., N)
xh, yi = np.meshgrid(h, i) 
E1= np.empty_like(xh)   
E2= np.empty_like(yi)   
Et = np.empty_like(xh)
poo=10 
ppp = [5]*poo
A=np.linspace(10, 50,poo)
B=np.linspace(-30, 10,poo)
C=np.linspace(-10, 20,poo)
D=[]
AAA=[]
for i in range(len(A)):
    D=(A[i],B[i],C[i])      
    AAA.append(D)   

#everything above this is fine    

ниже этого iЧтобы получить уравнение AAA0-AAA1 + AAA2 = E1, существует 10 различных D, каждый из которых имеет 3 компонента.все D вместе взятые = AAA

for i in range(poo):      
    for j in range(poo):
        x, y = xh[i,j], yi[i,j]
        for k in range(len(AAA)):
            E1[i,j] += AAA[k][0]-AAA[k][1]+AAA[k][2]
            E2[i,j] += AAA[k][0]-AAA[k][1]*AAA[k][2]
    Et[i,j] = (E1[i,j]**2+E2[i,j]**2)**(0.5)
print(Et)

результаты, которые я получаю, такие.кажется, что E1 для каждой координаты суммируется по одной координате, а E2 делает то же самое.

как я могу заставить E1 проходить через все AAA для первой координаты, а затем через всеAAA для второй координаты и т.д ....

[[  1.19876022e-311   1.19880258e-311   0.00000000e+000 ...,
    0.00000000e+000   0.00000000e+000   0.00000000e+000]
 [  0.00000000e+000   0.00000000e+000   0.00000000e+000 ...,
    0.00000000e+000   0.00000000e+000   0.00000000e+000]
 [  0.00000000e+000   0.00000000e+000   0.00000000e+000 ...,
    0.00000000e+000   0.00000000e+000   0.00000000e+000]
 ..., 
 [  0.00000000e+000   0.00000000e+000   0.00000000e+000 ...,
    0.00000000e+000   0.00000000e+000   0.00000000e+000]
 [  0.00000000e+000   0.00000000e+000   0.00000000e+000 ...,
    0.00000000e+000   0.00000000e+000   0.00000000e+000]
 [  0.00000000e+000   0.00000000e+000   0.00000000e+000 ...,
    0.00000000e+000   0.00000000e+000 

я просто хочу, чтобы он проходил правильно, а не помещал все в первые несколько значений

1 Ответ

0 голосов
/ 19 мая 2018

Предостережение - NAA

У вас слишком много очевидных проблем, и вы не объяснили, что вы от них хотите.

В вашем примере, E1 и E2 формы (100 100) и poo это 10

for i in range(poo):      
    for j in range(poo):
        ...
        E1[i,j] ...
        ...  

Этот цикл охватывает только в верхнем левом углу (10,10) угол из E1 и E2 - Ex[:10, :10].

Чтобы покрыть все пространство, попробуйте

for i in range(N):      
    for j in range(N):

Но похоже у тебя другие проблемы.

E1[i,j] += AAA[k][0]-AAA[k][1]+AAA[k][2]

Эффективно означает

E1[i,j] = (AAA[k][0]-AAA[k][1]+AAA[k][2]) ** (N*N)  #if using range(N) in the loops

, что делает очень большие числа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...