Esempio n. 1
0
        static void Main(string[] args)
        {
            Python py = new Python();

            TestType[,] array =
            {
                { 0, 1,  2,  3 },
                { 4, 5,  6,  7 },
                { 8, 9, 10, 11 }
            };

            //arrayの内容をPythonに送信
            PyArray <TestType> x = array;

            //pythonで受信したxを表示する
            Python.Print(x);

            Console.WriteLine("\n> pyBuffer[2, 1] += 100 From C#");

            //Pythonの値をC#から変更するクラスを作成
            x[2, 1] += 100;

            //c#から変更した結果を表示する
            Python.Print(x);

            //xをPythonのyに転送
            py["y"] = x;

            Console.WriteLine("\n> pyBuffer += 1000 From C#");

            //xのすべての値に1000を加算する
            x += 1000;

            //加算したxを表示する
            Python.Print(x);

            Console.WriteLine("\n> pytest(x) in Python");

            //pytest.pyを読み込む
            dynamic pyTest = new PyDynamicModule("pytest");

            //test内の関数calcを呼び出す
            x = pyTest.calc(x);

            //関数の結果を表示する
            Python.Print(x);

            Console.WriteLine("\n> Add array From C#");

            //加算用の配列を作る
            TestType[] addArray = { 10000, 20000, 30000, 40000 };

            //xのすべての値にaddArrayを加算する
            x += addArray;

            //加算したxを表示する
            Python.Print(x);

            Console.WriteLine("\n> Set array From C#");

            //セット用の配列を作る
            TestType[] setArray = { 1111, 2222, 3333, 4444 };

            //Pythonの値をC#から変更するクラスを作成
            PyArray <TestType[]> pyArrayBuffer = new PyArray <TestType[]>(x);

            //x[1]にsetArrayを設定する
            pyArrayBuffer[1] = setArray;

            //加算したxを表示する
            Python.Print(x);

            //計算したxをC#で取得
            TestType[,] destArrayX = (TestType[, ])x;

            //Pythonで宣言したyをC#で取得
            PyArray <TestType> pyNdArrayBuffer = py["y"];

            TestType[,] destArrayY = (TestType[, ])pyNdArrayBuffer;

            //取得したXの中身を表示
            Console.WriteLine("\n> Console.WriteLine(x[i, j]) from C#");
            for (int i = 0; i < destArrayX.GetLength(0); i++)
            {
                for (int j = 0; j < destArrayX.GetLength(1); j++)
                {
                    Console.WriteLine(i * destArrayX.GetLength(1) + j + " : " + destArrayX[i, j]);
                }
            }

            //取得したYの中身を表示
            Console.WriteLine("\n> Console.WriteLine(y[i, j]) from C#");
            for (int i = 0; i < destArrayY.GetLength(0); i++)
            {
                for (int j = 0; j < destArrayY.GetLength(1); j++)
                {
                    Console.WriteLine(i * destArrayY.GetLength(1) + j + " : " + destArrayY[i, j]);
                }
            }

            Console.WriteLine("Done.");
            Console.Read();
        }