定義された線(3D)に沿って等間隔でn個の点(3D)を計算する必要があります。線の始点と終点を知っています。まず、使用しました
for k in range(nbin):
step = k/float(nbin-1)
bin_point.append(beam_entry+(step*(beamlet_intersection-beam_entry)))
次に、大きな配列に追加を使用すると時間がかかることがわかり、次のようにコードを変更しました。
bin_point = [start_point+((k/float(nbin-1))*(end_point-start_point)) for k in range(nbin)]
newaxisを使用すると時間がさらに改善されるという提案がありました。変更されたコードは次のようになります。
step = arange(nbin) / float(nbin-1)
bin_point = start_point + ( step[:,newaxis,newaxis]*((end_pint - start_point))[newaxis,:,:] )
しかし、newaxis関数を理解できませんでした。また、start_pointとend_pointの構造や形状を変更しても、同じコードが機能するかどうかも疑問です。同様に、newaxisを使用して次のコードをmdoifyするにはどうすればよいですか?
for j in range(32): # for all los
line_dist[j] = sqrt([sum(l) for l in (end_point[j]-start_point[j])**2])
非常に不格好で申し訳ありませんが、start_pointとend_pointの構造をより明確にするために
array([ [[1,1,1],[],[],[]....[]],
[[],[],[],[]....[]],
[[],[],[],[]....[]]......,
[[],[],[],[]....[]] ])