我已经看到几个问题,询问如何通过xml-rpc调用发送numpy.ndarray
。这不是开箱即用的,因为正如xml-rpc docs所述,有一组固定的支持类型,基本上只限于内置函数的内置函数和容器。
一个简单的解决方案是使用
将numpy数组转换为列表 <array to send>.tolist()
在发送方,并使用
转换回numpy数组 np.array(<list I received>)
在接收方。但是,假设我希望能够直接支持ndarray
,而不需要明确展平/取消。我可以实现一个接口来实现这个功能吗?例如,我可以扩展ndarray
(我知道这很棘手)某些扁平化/非扁平化方法,这些方法将在xml-rpc中注册,从而用于序列化/反序列化吗?
答案 0 :(得分:1)
我认为没有任何延期的钩子。
您可以对对象进行编码/取消编码,而不是展平/取消展开,例如使用pickle或base64编码的pickle。
如果你做了压扁,请记住你需要:
<array>.shape
<array>.dtype
<array>.flat
简单的dtypes可以来回转换为字符串;如果你想支持它们,你可能需要更仔细地考虑复杂的dtypes。
[编辑]简洁地回答你的问题:不 - 没有可用的扩展挂钩。