Python中惯性张量的快速计算

Python中惯性张量的快速计算,python,performance,Python,Performance,我需要执行一个非常快速的in计算 问题如下: 假设xyz是一个形状数组:(样本,原子,3),它描述每个样本中每个原子的3笛卡尔坐标 每个样品中的原子必须分裂成一组分子。我需要每个样本中每个分子的惯性张量 每个分子都包含n个原子,它们的排列方式使它们组合在一起。即: numpy.array( numpy.split(xyz, atoms/n, axis=1).shape ) 返回形状数组:(分子数、样本数、每个分子的原子数,3),其中第一个索引在分子上运行 注: 这与所解决的问题非常相似

我需要执行一个非常快速的in计算

问题如下:

假设
xyz
是一个形状数组:
(样本,原子,3)
,它描述每个
样本中每个
原子的
3
笛卡尔坐标

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

每个分子都包含
n
个原子,它们的排列方式使它们组合在一起。即:

   numpy.array( numpy.split(xyz, atoms/n, axis=1).shape )
返回形状数组:(分子数、样本数、每个分子的原子数,3),其中第一个索引在分子上运行

注:

  • 这与所解决的问题非常相似,但他们计算整个系统的惯性张量,而我需要它各部分的惯性张量(系统中每个分子的惯性张量)
  • 最好获得一组惯性张量
  • 我认为这是一个很好的选择(但我发现很难实施)
  • 我可以很快得到原子质量的数组,而且没有问题
  • 如果有帮助的话,
    samples
    的大小约为100到500,
    atoms
    的大小约为20000(但该操作在许多块中运行,总共产生约1E5个样本)

那么,您的问题是使用循环对易于编写的算法进行矢量化以获得性能?在这里,我只需要使用像numpy这样的JIT编译器。例如或