у меня есть опубликованный ниже список, и он содержит списки, так что это список списков, и у меня есть веб-сервис, который возвращает return jsonify(resultsDict). проблема, с которой я сталкиваюсь, заключается в том, что когда я запускаю приложение, я получаю одно из сообщений об ошибках, опубликованных ниже.
как показано в коде ниже, я попытался установить dtype=np.float64 и dtype=object, но каждый из них генерирует связанную с ним ошибку, как показано ниже в коде.
пожалуйста, дайте мне знать, как это исправить
попытка_1
resultsDict = {
"extras": {
"pvTreatment":np.array(pvTreatment,dtype=np.float64).tolist(),
...
...
...
}
}
**error associated**:
ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (7,) + inhomogeneous part.
попытка_2
resultsDict = {
"extras": {
"pvTreatment":np.array(pvTreatment,dtype=object).tolist(),
...
...
...
}
}
**error associated**:
raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type float32 is not JSON serializable






Мое предложение состоит в том, чтобы сначала использовать списки одинакового размера (если они не отличаются на порядки), как в этом примере — Список списков в массив numpy
Таким образом, вам будет легче десериализовать его в список списков. Также вы можете использовать внешние библиотеки, такие как pickle, если хотите.
Если я попытаюсь создать массив из двух массивов, различающихся по длине, я получу вашу ошибку:
In [186]: np.array([np.ones((3)), np.zeros((4))],float)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Input In [186], in <cell line: 1>()
----> 1 np.array([np.ones((3)), np.zeros((4))],float)
ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (2,) + inhomogeneous part.
Я могу создать массив object dtype:
In [187]: np.array([np.ones((3)), np.zeros((4))],object)
Out[187]: array([array([1., 1., 1.]), array([0., 0., 0., 0.])], dtype=object)
Но когда я использую tolist, я получаю список с двумя массивами:
In [188]: np.array([np.ones((3)), np.zeros((4))],object).tolist()
Out[188]: [array([1., 1., 1.]), array([0., 0., 0., 0.])]
Массивы не сериализуемы в формате JSON.
Если бы внутренние массивы были изменены на списки, мы бы получили список списков:
In [191]: np.array([np.ones((3)).tolist(), np.zeros((4)).tolist()],object).tolist()
Out[191]: [[1.0, 1.0, 1.0], [0.0, 0.0, 0.0, 0.0]]
Для такого рода вещей избегайте массивов - как для внешнего списка, так и для внутреннего.
но основной список содержит списки, которые отличаются по размеру, например [[1,2,3,4],[5],[6,7],....]?