通过迭代构建一个numpy数组

时间:2018-11-21 10:19:30

标签: python arrays numpy

我从一个形状(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方法吗?

1 个答案:

答案 0 :(得分:2)

列表理解呢?看起来很简单,但功能足够强大。

def delta_matrix(pos_vec):
    return np.array([i-pos_vec for i in pos_vec])