【问题标题】:Inline initialization of two-dimensional typed array in IronPythonIronPython中二维类型数组的内联初始化
【发布时间】:2017-12-07 22:12:28
【问题描述】:

我有一个关于 IronPython 中类型化数组初始化的问题。我想在 IronPython 中初始化内联类型的二维数组。
在 IronPython 中,我发现了如何初始化简单类型的数组:

pythonTypedArray = Array[int]([0, 1, 2, 3, 4])

以及如何初始化数组的类型化数组:

pythonTypedArrayOfArrays = Array[Array[int]]([Array[int]([0, 1]), Array[int]([2, 3])])

例如,在 C# 中我可以这样做:

int[,] twoDimensionalArray = new int[,] { {0, 1, 2, 3, 4}, {5, 6, 7, 8, 9} };

我可以在 IronPython 中初始化内联二维类型数组吗?如果不是,在 IronPython 中初始化二维类型数组的最佳方法是什么?

【问题讨论】:

  • 使用numpynumpy.org
  • 你确定这是 Python 吗?好像不是……
  • 很抱歉没有提到这一点。这个问题与我可以使用 .NET 类型的 IronPython 有关。
  • @Bill:请edit你的问题。
  • @Bill 你应该这样标记它。

标签: python ironpython


【解决方案1】:

所以,你需要一个矩阵。在 Python 中,可以这样做:

matrix = [[0 for x in range(w)] for y in range(h)] 

或者使用numpy(你可以通过运行pip install numpy来安装它):

>>> import numpy
>>> numpy.zeros((4, 4))
array([[ 0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.]])

在numpy中,用随机数生成矩阵很简单:

>>> import numpy as np
>>> np.random.rand(2,3)
array([[ 0.22568268,  0.0053246 ,  0.41282024],
       [ 0.68824936,  0.68086462,  0.6854153 ]])

IMO,当你想要矩阵时,你想使用numpy,因为它有一些很好的方法可以真正帮助你处理它们。


//编辑:由于您添加了更多上下文,因此在 IronPython 中您可以通过以下方式创建数组数组:

array = Array[Array[int]]( ( (1,2), (3,4) ) )

或者你可以创建多维数组是使用Array.CreateInstance传递类型作为第一个参数,然后是维度大小:

array = Array.CreateInstance(int, 2, 3)

当您需要更多信息时,您可以随时阅读the docs

【讨论】:

  • numpy 是从哪里来的?
  • 为其添加了一些参考资料;P
  • @MrGrj 如果我使用 Array.CreateInstance 方法,那么如何用值填充这个数组?
  • 是的。只有这样吗?
  • @MrGrj,array = Array.CreateInstance(int, 2, 3) 变体的内联初始化怎么样?
【解决方案2】:
import numpy
a = numpy.arange(12)
a.shape = 3,  4
print(a)
>>>
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

【讨论】:

  • 您能否提供有关如何安装 numpy 的任何信息?我已经尝试过此链接的说明,但它不起作用(无法下载 ironpkg-1.0.0.py 文件):stackoverflow.com/questions/29397540/…
  • 这很棘手。请改用科学蟒蛇。像 Anaconda,WinPython,只要谷歌它。他们预先安装了 numpy 等。
猜你喜欢
  • 1970-01-01
  • 2023-01-10
  • 1970-01-01
  • 1970-01-01
  • 2012-11-29
  • 1970-01-01
相关资源
最近更新 更多