gpt4 book ai didi

python - 在内存中压缩/压缩 numpy 数组

转载 作者:太空狗 更新时间:2023-10-30 00:34:44 28 4
gpt4 key购买 nike

我的内存对我的数据来说太小了,所以我试着把它打包到内存中。

下面的代码确实有效,但我必须记住数据的类型,这有点尴尬(很多不同的数据类型)。

有更好的建议吗?更小的运行时间也将不胜感激

import numpy as np    
import zlib

A = np.arange(10000)
dtype = A.dtype

B = zlib.compress(A, 1)
C = np.fromstring(zlib.decompress(B), dtype)
np.testing.assert_allclose(A, C)

最佳答案

您可以尝试使用 numpy 的内置数组压缩器 np.savez_compressed() .这将为您省去跟踪数据类型的麻烦,但可能会为您的方法提供类似的性能。这是一个例子:

import io
import numpy as np

A = np.arange(10000)
compressed_array = io.BytesIO() # np.savez_compressed() requires a file-like object to write to
np.savez_compressed(compressed_array, A)

# load it back
compressed_array.seek(0) # seek back to the beginning of the file-like object
decompressed_array = np.load(compressed_array)['arr_0']

>>> print(len(compressed_array.getvalue())) # compressed array size
15364
>>> assert A.dtype == decompressed_array.dtype
>>> assert all(A == decompressed_array)

请注意,任何大小的缩减都取决于您的数据分布。随机数据本质上是不可压缩的,因此尝试压缩它可能看不到太多好处。

关于python - 在内存中压缩/压缩 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39035983/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com