Добрый день,Отправить многомерную матрицу numpy по гнезду
Я искал это, но не придумал никаких ответов. Я хочу отправить многомерный массив numpy через сокет. Таким образом, я решил преобразовать его в строку:
Однако, он разрушает представление массива:
>>> import numpy as np
>>> x = np.array([[0, 1], [2, 3]])
>>> xstring = x.tostring()
>>> print xstring
>>> print x
[[0 1]
[2 3]]
>>> print xstring
>>> nparr = np.fromstring(xstring, dtype=np.uint8)
>>> print nparr
[0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0]
есть в любом случае я могу получить преобразование в строку, чтобы каким-то образом, сохранить размер его ?
Рассол был очень медленным и сделал массив 2d массивным. Это также изредка разбивало мою программу с некоторыми исключениями, связанными с замораживанием – ovfstack
@ovfstack: Вы правы. На Python 3 накладные расходы незначительны для больших массивов, и он работает только в два раза медленнее, чем '.tostring()'. Для Python 2 вы должны увидеть значительное улучшение, если вы укажете 'protocol = 2', хотя в этом случае он по-прежнему кажется в 4 раза медленнее, чем' .tostring(). –
Я просто использовал функцию imencode, которую предоставляет opencv. Он также смог «сжать» мой массив, и imdecode смог восстановить его с приличной точностью – ovfstack