8

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

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

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

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

编辑:

  • 元素数量约为。256^3。
  • 3d float 表示可以像这样访问数组:array.GetValue(indexX, indexY, indexZ)。我不确定 IronPython 的 System.Array 中的各个内存是如何组织的。
  • 背景:我为 IronPython API 编写了一个接口,它可以访问模拟软件工具中的数据。我检索 3d 标量数据并将其累积到 IronPython 脚本中的时间数组中。累积执行10,000次并且应该很快,以便模拟不会花费时间。
4

1 回答 1

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
于 2015-02-23T21:06:11.590 回答