我想在 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