【发布时间】:2018-03-01 00:01:44
【问题描述】:
我对 numpy 有点陌生,我正在尝试计算 numpy 数组的某些元素之间的成对距离。
我有一个 numpy n x 3 数组,其中 n 3D 笛卡尔坐标 (x,y,z) 表示网格中的粒子。其中一些粒子在程序运行时移动,我需要跟踪移动粒子的距离。我持有一个整数列表,其中包含已移动粒子的索引。
我知道 pdist 但这会计算每对粒子之间的距离,这将是低效的,因为只有其中一些粒子移动了。理想情况下,例如,如果只有 1,2 移动了,那么我只会计算 1 与 2...N 和 2 与 3...N 的距离
这样做最有效的方法是什么?现在我有一个看起来不太理想的双循环......
for i in np.nditer(particles_moved):
particles = particles[particles!=i]
for j in np.nditer(particles):
distance(xyz,i, j)
谢谢
【问题讨论】:
-
numpy.linalg.norm(a - b) 其中 a 和 b 是 np.array([x, y, z])
-
但我仍然会被循环卡住
-
您能否提供一个输入和预期输出的最小示例?
标签: python arrays numpy distance