2012-02-07 14 views
2

IronPythonでコードを記述しようとしていて、.NETアセンブリを呼び出すnumpyがあります。 バージョン情報: numpyの-2.0.0-1 scipyのダウンロード-1.0.0-2 IronPythonの2.7.1PTVSとnumpyでnumpy 64bitサポートSystem.Int64 casting

私はここに与えられた指示に従ってscipyのダウンロードとnumpyのをインストール:

http://www.enthought.com/repo/.iron/

私がipy64.exeを実行しようとすると、次のような結果になります。

Failed while initializing NpyCoreApi: BadImageFormatException:An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000 
B) 
NumpyDotNet stack trace: 
    at NumpyDotNet.NpyCoreApi.GetNativeTypeInfo(Int32& intSize, Int32& longsize, Int32& longLongSize, Int32& longDoubleSize) 
    at NumpyDotNet.NpyCoreApi..cctor() 

すべてがipy.exeで動作します。 IronPythonのnumpyの現在のバージョンは64ビット互換ではありませんか?

私が調査している根本的な問題は、System.Int64を引数として必要とする.NETアセンブリメソッドを呼び出すことです。 Pythonのネイティブintは正常に動作しますが、(ipy.exe下)numpy.int32を呼び出す際に、暗黙的なキャストがで失敗します。

E 
====================================================================== 
ERROR: data_type_tests 
    System.Array[Int64](listValues) 
TypeError: expected Int64, got numpy.int32 

私が実行していたコードです:

values = array([1,2,3,4,5]) 
listValues = list(values); 
System.Array[Int64](listValues) 

私が作る場合直接のリスト、すなわちvalues = [1,2,3,4,5] の場合は、上記が実行されます。

numpyの配列を32ビットでSystem.Array [Int64]に変換する際の提案や、IronPythonのnumpy 64ビットのサポートについてのコメントはありますか?私は必要なもの

+0

もっと具体的には:numpy配列型を、 numpy.int32>要素の代わりに要素を含むpythonリストにキャストする方法は、私が思っています(基本int型は上記のapiで動作するためです)。私はこの変換をパフォーマンス上のやり方でしたいと思っています。手動ですべての要素を反復し、 'ToInt64'などを呼び出すのは無駄に思えます。 –

+0

この投稿が関連しているかどうか不思議です:http://comments.gmane.org/gmane.comp.python.numeric.general/46855 –

答えて

0

た:

listValues.tolist() instead of list(listValues) 

リスト()メソッドは、ラップの各要素を維持します。このフォーラムの投稿には私が探していた答えがありました:http://www.python-forum.org/pythonforum/viewtopic.php?f=3&t=2962&p=12102

私はまだ64bit numpyのサポートについて興味がありますか?

+0

例外 - BadFormatException - 間違ったビットのモジュールをプロセス。どのモジュールであるかははっきりしていません。あなたは融合ロギングでそれをデバッグしようとしましたか? – codekaizen

+0

モジュールはNpyAccessLib.dllです。 – Seth

関連する問題