我需要沿定义的线(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],[],[],[]....[]],
[[],[],[],[]....[]],
[[],[],[],[]....[]]......,
[[],[],[],[]....[]] ])