外部プログラムを使用して、C++ で記述された行列を計算していますboost::python
。この C 配列を numpy に渡したいのですが、著者によると、この機能は numpy で既に実装されていobj.__array_interface__
ます。これを Python スクリプトで呼び出し、C++ オブジェクトをX
に割り当てると、次のようになります。
print X
#<sprint.Matrix object at 0x107c5c320>
print X.__array_interface__
#<bound method Matrix.__array_interface__ of <sprint.Matrix object at 0x107c5c320>>
print X.__array_interface__()
#{'shape': (5, 5), 'data': (4416696960, True), 'typestr': '<f8'}
print np.array(X)
#Traceback (most recent call last):
# File "<string>", line 96, in <module>
#ValueError: Invalid __array_interface__ value, must be a dict
私の限られた理解から、問題はX.__array_interface__
実際には何も返さないことにあると思います()
。これらの引数をnp.array
明示的に渡す方法や、この問題の回避策はありますか?
私は C++ と python を混在させるのは本当に初めてです。これが意味をなさない場合、または何らかの部分について説明する必要がある場合はお知らせください。