将算术运算应用于IronPython中的System.Array的最快方法

时间:2015-01-28 14:23:14

标签: iterator ironpython system.array

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

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

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

什么是紧固件/计算此计算的快速方法?

修改:

  • 元素的数量是适当的。 256 ^ 3。
  • 3d float意味着可以像这样访问数组:array.GetValue(indexX,indexY,indexZ)。我不确定IronPython的System.Array中各自的内存是如何组织的。
  • 背景:我编写了一个IronPython API接口,可以在仿真软件工具中访问数据。我检索3d标量数据并将其累积到我的IronPython脚本中的时间数组中。累积执行10,000次并且应该很快,因此模拟不需要很长时间。

1 个答案:

答案 0 :(得分:0)

是否可以使用为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