Ngày tốt,Gửi một mảng đa chiều trên một ổ cắm
Tôi đã tìm kiếm điều này nhưng chưa đưa ra bất kỳ câu trả lời nào. Tôi muốn gửi một mảng numpy đa chiều trên một ổ cắm. Do đó, tôi quyết định chuyển nó sang một chuỗi:
Tuy nhiên, nó phá hủy các đại diện của các mảng:
>>> 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]
Liệu có cách nào tôi có thể nhận được chuyển đổi sang chuỗi bằng cách nào đó, tiết kiệm kích thước của nó ?
Pickle cực kỳ chậm và tạo mảng 2d lớn của tôi. Nó cũng đôi khi bị hỏng chương trình của tôi với một số ngoại lệ keyerror – ovfstack
@ovfstack: Bạn nói đúng. Trên Python 3, overhead không đáng kể đối với các mảng lớn và nó chỉ chạy chậm gấp hai lần '.tostring()'. Đối với Python 2, bạn sẽ thấy một cải tiến lớn nếu bạn chỉ định 'protocol = 2', mặc dù nó vẫn có vẻ chậm hơn 4 lần so với' .tostring() 'trong trường hợp này. –
Tôi chỉ sử dụng chức năng imencode mà opencv cung cấp. Nó cũng có thể "nén" mảng của tôi và imdecode đã có thể phục hồi nó với độ chính xác khá – ovfstack