1

Tornadoを使用して提供したいnumpy配列がありますが、Tornadoを使用してそれを書き込もうとするとself.write(my_np_array)、AssertionErrrorが表示されます。

私は何が間違っているのですか?

File "server.py", line 28, in get
self.write(values)
File "/usr/lib/python2.7/site-packages/tornado/web.py", line 468, in write
chunk = utf8(chunk)
File "/usr/lib/python2.7/site-packages/tornado/escape.py", line 160, in utf8
assert isinstance(value, unicode)
4

1 に答える 1

1

あなたの目標が何であるか正確にはわかりませんが、オブジェクトの文字列表現を取得したい場合は、次のことができます

self.write(str(your_object))

numpy 配列を別のクライアントで使用するために python オブジェクトとして提供する場合は、最初にオブジェクトをピクルする必要があります

import pickle
self.write(pickle.dumps(your_object))

オブジェクトは次のコマンドで取得できます

your_object = pickle.loads(sent_object)

悪意のあるコードの実行につながる可能性があるため、信頼できないソースからオブジェクトを unpickle することは危険であることに注意してください。

編集:

numpy 配列を転送して JavaScript 内で使用する場合、バイナリ表現は必要ありません。

numpy配列をリストに変換するだけです

your_numpy_list = your_numpy_object.tolist()

そしてそれをjsonに変換します

import json
self.write(json.dumps(your_numpy_list))

JavaScript側では、結果の文字列を解析するだけです

var result = JSON.parse(resultString)

それから型付き配列を作成します

var typedResult = new Float32Array(result)

出来上がり!

于 2012-08-20T22:41:32.150 に答える