私のコードを検討してください
a,b,c = np.loadtxt ('test.dat', dtype='double', unpack=True)
a、b、および c は同じ配列長です。
for i in range(len(a)):
q[i] = 3*10**5*c[i]/100
x[i] = q[i]*math.sin(a)*math.cos(b)
y[i] = q[i]*math.sin(a)*math.sin(b)
z[i] = q[i]*math.cos(a)
この方程式 (xi-xj)+(yi-yj)+(zi-zj) = r を反復するために、x、y、z の 2 点の差のすべての組み合わせを見つけようとしています。
この組み合わせコードを使用します
for combinations in it.combinations(x,2):
xdist = (combinations[0] - combinations[1])
for combinations in it.combinations(y,2):
ydist = (combinations[0] - combinations[1])
for combinations in it.combinations(z,2):
zdist = (combinations[0] - combinations[1])
r = (xdist + ydist +zdist)
これは、私が持っている大きなファイルのpythonには長い時間がかかります。できればネストされたループを使用してrの配列を取得するより高速な方法があるかどうか疑問に思っていますか?
そのような
if i in range(?):
if j in range(?):