代码之家  ›  专栏  ›  技术社区  ›  user1767754

在numpy中表示粒子运动

  •  0
  • user1767754  · 技术社区  · 6 年前

    numpy 代表超过 images volumetric data 我会给他们做手术。不管怎么说,numpy是用来放桌子的还是更适合在熊猫身上完成的?

    我基本上需要存储粒子来表示粒子运动,我不知道如何定义一个形状,以便我可以运行例如 linalg.svd 并更新最后一个字段 Determinant

    Position (Vector3 or 3 floats)
    Velocity (Vector3 or 3 floats)
    Matrix (Matrix or 9 floats)
    Determinant (1 float)
    

    我想象我会创造一个形状 (16, 1000) matrix 我可以把它传给 linalg.svd公司

    谢谢你的建议。

    1 回复  |  直到 6 年前
        1
  •  1
  •   user2699    6 年前

    Numpy很好地处理了这个案子,使用 structured arrays . 对于您的特定情况,您可以按如下方式创建一个数组(假设您希望矩阵为3x3以便与SVD一起使用)。 编辑 :应该是 np.zeros 若要创建数组,则可以逐行或逐字段复制数据。

    d = dtype([('pos', float, 3), ('v', float, 3), ('Matrix', float, (3, 3)), ('det', float)])
    arr = np.zeros(1000, dtype=d).view(np.recarray)
    

    recarray ,但它允许将结构化数组字段作为属性访问(即。, arr.Matrix

    arr.det = [det(a) for a in arr.Matrix] 
    

    您还可以使用括号表示法和字段名称访问字段,这适用于重新排列或结构化数组。

    arr['det'] = [det(a) for a in arr['Matrix']]