【发布时间】:2018-11-21 18:23:58
【问题描述】:
我从一个形状为 (n,d) 的数组开始,其中包含 n 个长度为 d 维的粒子向量,并且想要构造一个包含形状为 (n, n,d) 我将继续使用它来计算牛顿模拟中的力等。
我希望能够将其推广到任意数量的维度,因此位置向量可以是任意 d,并提出了以下内容,在 a时间到一个列表中,然后我将其转换回一个数组。但这看起来很笨重,而且,既然它一定是一个如此常见的操作,我不禁想到有一些内置的 numpy 魔法可以更快地执行这个操作。
def delta_matrix(pos_vec):
build=[]
for i in pos_vec:
build.append(i-pos_vec)
return np.array(build)
特别是,是否有一个 numpy 方法可以执行这种迭代类型的操作?
【问题讨论】:
-
pos_vec[:,None] - pos_vec? -
是的,这就是我一直在寻找的东西——我仍然要完全掌握广播的细节——但是当我将如此产生的结果与更传统的迭代方法进行比较时,它们是非常快。