所以我有4D ndarray,其中每个元素都是数据类型为np.int8的8x8 numpy数组。我想使用tobytes()
将其转换为位串,然后使用frombuffer()
将其转换回其原始状态。如何创建数据类型dt
,以使np.frombuffer(bits, dtype=dt)
在重整后能给我原来的ndarray?遵循此处的文档
https://docs.scipy.org/doc/numpy/reference/generated/numpy.dtype.html#numpy.dtype
我已经尝试过许多类似dt = np.dtype([('block', np.int8, (8x8))])
的事情,但到目前为止没有任何效果。
答案 0 :(得分:0)
假设您的数组实际上是一个6D数组,其中每个元素都是一个np.int8,则可以这样执行:
arr = np.random.randint(-100, 100, (2, 3, 2, 3, 8, 8)).astype(np.int8)
print(arr.shape)
print(arr.dtype)
arr_bytes = arr.tobytes()
arr_reborn = np.frombuffer(arr_bytes, dtype=np.int8).reshape(arr.shape)
print(np.all(arr == arr_reborn))
打印
>>> (2, 3, 2, 3, 8, 8)
>>> int8
>>> True