下面代码的第一部分只是制作一个坐标系和随机数
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
在此下面我想要方程AAA0-AAA1 + AAA2 = E1 有10个不同的D,每个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似乎只是在1个坐标上进行总结,E2也在做同样的事情。
如何通过所有AAA的第一个共同联盟进行E1循环,然后通过所有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
我只是希望它能够正确地循环而不是将所有内容放在前几个值
中答案 0 :(得分:0)
警告 - NAA
你有太多明显的问题而且你没有充分解释你想要它做什么。
在您的示例中,E1
和E2
形状为(100,100),poo
为10
for i in range(poo):
for j in range(poo):
...
E1[i,j] ...
...
此循环仅涵盖E1
和E2
- Ex[:10, :10]
的左上角(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
这使得数字非常大。