2011-09-15 11 views
2

floatの多次元配列をIronPythonコードからC#ライブラリに渡す方法を理解しようとしています。IronPythonからC#ライブラリへの配列の受け渡し

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) 

public void ShowMessage(double[,] values) 

これは私のIronPythonのコードは次のとおりです。ここで

は私が呼んしようとしているC#のコードである(これは、関数は、私は私のIronPythonのコードにインポートしていますライブラリのクラスです)

"期待された配列[float]、リストを得ました"という例外が発生しました。次に、配列をタプルに変換しようとしましたが、1次元配列に対してしか機能しませんでした。

どのようにすればいいですか?

答えて

5

2次元.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); 

あなたはこのような何かを試みることができます

関連する問題