2024-06-11 18:39:22 发布
网友
给定一个numpy数组,有没有一个脚本可以完全用python编写,返回它的压缩比?在
这是一个非常简单、具体的问题,如果不手动使用文件系统,我似乎无法想出一个好的解决方案。在
请注意,使用压缩文件本身与此问题无关。答案只需与压缩比值有关。在
由于numPy使用c,我不认为纯python解决方案是可能的,但是您可以避免使用stringIO的文件系统。使用numpy内置函数np.savez_compression我们可以将结果大小与np.savez进行比较
np.savez_compression
np.savez
import StringIO def get_compression_ratio(a): uncompressed = StringIO.StringIO() compressed = StringIO.StringIO() np.savez_compressed(compressed, a) np.savez(uncompressed, a) return uncompressed.len/float(compressed.len) a = np.zeros([1000,1000]) a[23,60] = 1. b = np.random.random([1000,1000]) print("one number = ", get_compression_ratio(a), "random = ", get_compression_ratio(b))
有了结果
由于随机数是不可压缩的,这是有意义的,但有一个非零值的数组应该更好。结果依赖于savez_compression中的算法是否有效/正确。在
savez_compression
由于numPy使用c,我不认为纯python解决方案是可能的,但是您可以避免使用stringIO的文件系统。使用numpy内置函数
np.savez_compression
我们可以将结果大小与np.savez
进行比较有了结果
^{pr2}$由于随机数是不可压缩的,这是有意义的,但有一个非零值的数组应该更好。结果依赖于
savez_compression
中的算法是否有效/正确。在相关问题 更多 >
编程相关推荐