我有一个numpy数组,我想使用Tornado提供它,但当我尝试使用self.write(my_np_array)
编写它时,我只得到一个AssertionError。
我做错了什么?
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)
不确定你的目标是什么,但如果你想获得对象的字符串表示,你可以进行
self.write(str(your_object))
如果您想将numpy数组作为python对象提供,以便在不同的客户端上使用它,则需要首先pickle对象
import pickle
self.write(pickle.dumps(your_object))
然后可以使用检索对象
your_object = pickle.loads(sent_object)
请记住,从不受信任的源中取消拾取对象是危险的,因为这可能导致恶意代码执行。
编辑:
如果你想传输一个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)
瞧!