Python 如何将字节对象分配给NumPy数组切片?
我想使用NumPy数组来高效地操作大字节数组。不幸的是,将Python 如何将字节对象分配给NumPy数组切片?,python,arrays,numpy,byte,Python,Arrays,Numpy,Byte,我想使用NumPy数组来高效地操作大字节数组。不幸的是,将bytes对象分配给NumPy数组的一部分并不像我预期的那样工作: 导入结构 将numpy作为np导入 数组=np.zero(10,dtype=np.uint8) #将65535存储到前两个字节中 数组[0:2]=struct.pack(“您可以创建一个引用基础缓冲区的数组。这应该避免创建副本 array[:2] = memoryview(struct.pack('<H', 65535)) array # array([255, 2
bytes
对象分配给NumPy数组的一部分并不像我预期的那样工作:
导入结构
将numpy作为np导入
数组=np.zero(10,dtype=np.uint8)
#将65535存储到前两个字节中
数组[0:2]=struct.pack(“您可以创建一个引用基础缓冲区的数组。这应该避免创建副本
array[:2] = memoryview(struct.pack('<H', 65535))
array
# array([255, 255, 0, 0, 0, 0, 0, 0, 0, 0], dtype=uint8)
array[:2]=memoryview(struct.pack(‘根据bytes
和bytearray
都支持缓冲协议。所以肯定还有其他区别,可能是numpy
实现本身?@ph4nt0m这里只是推测一下,我想原因是如果你传递一个字节字符串v/s a bytearray,numpy会尝试根据一种字符编码方案。而在字节数组中,字节是分开解释的。我猜。
array[0:2] = bytearray(struct.pack('<H', 65535)) # works
array[:2] = memoryview(struct.pack('<H', 65535))
array
# array([255, 255, 0, 0, 0, 0, 0, 0, 0, 0], dtype=uint8)