Python сериализует и десериализует массив numpy внутри объекта

Я хотел бы взять объект Python и сериализовать / десериализовать в / из JSON. Внутри объекта есть множество массивов:

class Student(object):
    name = ""
    age = 0
    major = ""
    teacher = ""
    #tuple1 = (1,2,3)
    #tuple2 = ("a","b","c")
    ndarr = ""

    def __init__(self, name, age, major):
        self.name = name
        self.age = age
        self.major = major

В настоящее время я использую jsonpickle для сериализации его в json.

frozen = jsonpickle.encode(obj)
print "jsonpickle serialized object: " + frozen

Однако после сериализации массив numpy выглядит странно:

jsonpickle сериализованный объект:

{"py/object": "Student.Student", "age": 21, "major": "eecs", "ndarr": {"py/reduce": [{"py/object": "__builtin__.builtin_function_or_method"}, {"py/tuple": [{"py/type": "numpy.ndarray"}, {"py/tuple": [0]}, "b"]}, {"py/tuple": [1, {"py/tuple": [2, 2]}, {"py/reduce": [{"py/type": "numpy.dtype"}, {"py/tuple": ["f8", 0, 1]}, {"py/tuple": [3, "<", null, null, null, -1, -1, 0]}, null, null]}, true, {"py/b64": "2MfF58x/AADYx8XnzH8AAAAAAAAAAAAAAAAAAAAAAAA=\n"}]}, null, null]}, "name": "larry"}

есть ли простой способ сериализовать объекты массива numpy, которые находятся внутри другого объекта? Я считаю, что первый ответ внутри этого сообщения работает, но его нет в объекте: Массив NumPy не сериализуем в формате JSON

Может быть, этот пост может помочь: stackoverflow.com/questions/26646362/…

hmaarrfk 31.10.2018 15:43
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
4
1
940
0

Другие вопросы по теме