小编joh*_*jax的帖子

优化Python距离计算,同时考虑周期性边界条件

我编写了一个Python脚本来计算3D空间中两点之间的距离,同时考虑周期性边界条件.问题是我需要对很多很多点进行计算,计算速度很慢.这是我的功能.

def PBCdist(coord1,coord2,UC):
    dx = coord1[0] - coord2[0]
    if (abs(dx) > UC[0]*0.5):
       dx = UC[0] - dx
    dy = coord1[1] - coord2[1]
    if (abs(dy) > UC[1]*0.5):
       dy = UC[1] - dy
    dz = coord1[2] - coord2[2]
    if (abs(dz) > UC[2]*0.5):
       dz = UC[2] - dz
    dist = np.sqrt(dx**2 + dy**2 + dz**2)
    return dist
Run Code Online (Sandbox Code Playgroud)

然后我调用该函数

for i, coord2 in enumerate(coordlist):
  if (PBCdist(coord1,coord2,UC) < radius):
      do something with i
Run Code Online (Sandbox Code Playgroud)

最近我读到我可以通过使用列表理解来大大提高性能.以下适用于非PBC案件,但不适用于PBC案件

coord_indices = [i for i, y in enumerate([np.sqrt(np.sum((coord2-coord1)**2)) for coord2 in …
Run Code Online (Sandbox Code Playgroud)

python optimization list-comprehension

10
推荐指数
2
解决办法
5271
查看次数

标签 统计

list-comprehension ×1

optimization ×1

python ×1