在Python

时间:2017-08-29 22:42:18

标签: python performance inertia

我需要在inertia tensors中对Python进行非常快速的计算。

问题如下:

xyzNumpy形状数组:(samples, atoms, 3),描述每个3中每个atoms的{​​{1}}笛卡尔坐标。

每个样本中的samples必须分成一组分子。 我需要每个样本中每个分子的惯性张量

每个分子都含有atoms个原子,它们按照它们组合在一起的方式排序。那就是:

n

返回一个形状数组:(分子数,样本数,每分子原子数3),其中第一个指数在分子上运行。

注意:

  • 它与解决的问题 here非常相似,但它们计算整个系统的惯性张量,而我需要其各部分的惯性张量(每个分子的惯性张量)系统)。
  • 最好获得一组惯性张量。
  • 我认为numpy.einsum是一个不错的选择(但我觉得很难实现)
  • 我可以快速且无问题地获得一系列原子质量。
  • 如果有帮助, numpy.array( numpy.split(xyz, atoms/n, axis=1).shape ) 的大小约为100到500,samples的大小约为20 000(但该操作在许多块中运行,总共产生大约1E5个样本)。

0 个答案:

没有答案