我从一个形状(n,d)的数组开始,其中包含长度为 d 个维度的n个粒子向量,并想构建一个包含形状为(n, n,d),我将继续使用它来计算牛顿模拟中的力等。
我希望能够针对任意数量的维度进行概括,因此位置矢量可以是任何 d ,并提出以下内容,在一个位置上将新维度构建为一个数组时间进入列表,然后将其转换回数组。但这似乎很笨拙,而且,由于它必须是一种常见的操作,因此我不禁想到有一些内置的numpy魔术可以更快地执行此操作。
def delta_matrix(pos_vec):
build=[]
for i in pos_vec:
build.append(i-pos_vec)
return np.array(build)
那么特别是,有一种执行这种迭代类型的操作的numpy方法吗?
答案 0 :(得分:2)
列表理解呢?看起来很简单,但功能足够强大。
def delta_matrix(pos_vec):
return np.array([i-pos_vec for i in pos_vec])