Skip to main content
 首页 » 编程设计

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

2024年08月05日9lovecherry

我想在 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 接口(interface),它可以访问模拟软件工具中的数据。我检索 3d 标量数据并将其累积到 IronPython 脚本中的时间数组中。累加执行 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