我想在IronPython中逐个元素地添加(算术)两个大System.Array s并将结果存储在第一个数组中,如下所示:

    for i in range(0:ArrA.Count) :
      arrA.SetValue(i, arrA.GetValue(i) + arrB.GetValue(i));

但是,这似乎很慢。具有C背景,我想使用指针或迭代器。但是,我不知道如何快速应用IronPython习惯用法。我不能使用Python列表,因为我的对象严格来自System.Array类型。类型是3d float。

什么是最快/最快的方法来执行此计算?

编辑:
  • 元素数为appr。 256 ^ 3。
  • 3d float表示可以按以下方式访问数组:array.GetValue(indexX,indexY,indexZ)。我不确定在IronPython的System.Array中如何组织相应的内存。
  • 背景:我编写了IronPython API的接口(interface),该接口(interface)可以访问仿真软件工具中的数据。我在IronPython脚本中检索3d标量数据并将其累积到时间数组。累计执行了10,000次,并且应该很快,因此模拟不会花时间。
  • 最佳答案

    是否可以使用为IronPython开发的numpy库?

    https://pytools.codeplex.com/wikipage?title=NumPy%20and%20SciPy%20for%20.Net

    它似乎受支持,据我所知,您可以使用数组等实现python到C风格的指针功能。

    创建一个数组:

    x = np.array([[1, 2, 3], [4, 5, 6]], np.int32)
    

    将所有元素乘以3.0:
    x *= 3.0
    

    关于iterator - 在IronPython中将算术运算应用于System.Array的最快方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28194610/

    10-16 16:02