我试图了解如何将一个浮点的多维数组从IronPython代码传递给C#库。
这是我试图调用的C#代码(这是一个函数是我导入到IronPython代码中的库类):
public void ShowMessage(double[,] values)
这是我的IronPython代码:
import clr
clr.AddReferenceToFile(r"DisplayLib.dll")
from DisplayLib import Display
display = Display()
a = [[1.2, 1.3, 1.4, 1.5],
[2.2, 2.3, 2.4, 2.5]]
display.ShowMessage(a)
我得到以下异常:“期望的数组[浮点数],得到列表”然后我尝试将数组转换为元组但它只适用于1D数组。
有关如何做的任何建议?
答案 0 :(得分:5)
您需要创建一个二维.NET数组的实例。您不能使用Python列表代替数组。一个不幸的限制。
您可以尝试这样的事情:
from System import Array
data = [[1.2, 1.3, 1.4, 1.5],
[2.2, 2.3, 2.4, 2.5]]
# assuming all rows will have the same length
a = Array.CreateInstance(float, len(data), len(data[0]))
for i, row in enumerate(data):
for j, col in enumerate(row):
a[i, j] = col
display.ShowMessage(a);