我具有以下结构的功能。它基本上计算矩阵的上三角并使它对称。是否可以使用一些小技巧使它更快?
import numpy as np
def g(x, y):
# some calculation that returns a float
def f(a):
"""
a is a list of objects, return a symmetric Numpy array
"""
n = len(a)
ret = np.empty((n,n))
for i in range(1, n):
for j in range(i+1, n):
ret[i, j] = ret[j, i] = g(a[i], a[j])
更多详细信息:
这里的a
是包含Nx3 numpy数组(粒子的位置)作为属性的对象(轨迹帧)的列表,只有该Nx3 numpy数组与计算有关。因此,为简单起见,我们可以假设a
是numpy数组的列表。 g
仅使用numpy运算进行计算。例如,可以将其视为几何对齐然后进行平均距离计算。