要将此重新排列的内容传递给fastAPI,请执行以下操作:
import numpy
rec_array = numpy.recarray(shape = (1, ),
dtype = [('col_a', 'O'),
('col_b', '<f8'),
('col_c', '<i8')])
rec_array['col_a'][0] = '0'
rec_array['col_b'][0] = 1.0
rec_array['col_c'][0] = 128
此版本适用于:
{'col_a':[str(rec_array['col_a'][0])],
'col_b':[float(rec_array['col_b'][0])],
'col_c':[int(rec_array['col_c'][0])]}
但这一个不是:
{name:[rec_array[name][0]] for name in rec_array.dtype.names}
我想知道为什么。以下是我在windows下从fastAPI获得的错误跟踪:
File "C:\Users\xor\AppData\Local\Programs\Python\Python38-32\lib\site-packages\fastapi\encoders.py", line 158, in json
able_encoder
raise ValueError(errors)
ValueError: [TypeError("'numpy.int64' object is not iterable"), TypeError('vars() argument must have __dict__ attribute'
)]
您面临的问题是因为int64(
<i8
)类型。在第一个代码段中,您将显式地将其强制转换为常规int:而在第二种情况下,它保持
numpy.int64
:要解决此问题,可以执行以下操作:
这将生成一个可以发送到fast API的风管
相关问题 更多 >
编程相关推荐