4

C++ プログラムから読み取り、対応する配列を作成できるように、次元を含む 2D numpy 配列をファイルに書き込む必要があります。

配列を保存する簡単なコードを書きましたが、C++ から読み取ることができますが、最初に配列のサイズを書き込もうとすると、常にエラーが発生します。

これが私の簡単なpythonコードです:

1 file = open("V.bin","wb")
2 file.write(V.shape)
3 file.write(V)
4 file.close()

2行目にエラーが表示されます。私も試しました:

n1, n2 = V.shape
file.write(n1)
file.write(n2)

しかし、それも機能しません。

私はそれが示すエラーを追加しています:

トレースバック (最新の呼び出しが最後): file.write(V.shape[0]) TypeError: 文字列またはバッファーである必要があります。int ではありません。

ありがとう!

4

2 に答える 2

5

バイナリで保存するnumpy.save()を使用できます。

于 2012-11-08T14:43:20.730 に答える
2

numpy.savetextasciiで保存したい場合に 使用できます。

または (バイナリ データを扱っているように見えるため)、生データ ストリームを保存する場合はndarray.tostring、ファイルに直接ダンプできるバイト文字列を取得するために使用できます。

このアプローチの利点は、独自のファイル形式を作成できることです。欠点は、実際にファイルに書き込むために文字列を作成する必要があることです。


そして、2行目にエラーが発生していると言っているのでf.write、文字列が必要なためエラーです。あなたはそれをatupleまたはintsに渡そうとしています。struct.packこの問題を解決するために 使用できます。

f.write(struct.pack('2i',*array.shape))
于 2012-11-08T14:44:51.443 に答える