繁体   English   中英

量化numpy向量的快速方法

[英]Fast way to quantize numpy vectors

我有大量的numpy向量,每个向量的形状(3,)都有8位整数值:

vec = np.random.randint(2**8, size=3)

我想通过一些已知的缩减因子将这些向量量化为更小的空间。 我知道我可以在一系列操作中通过定义另一个向量来定义信息丢失量,将vec除以该向量,然后将结果值转换回整数:

>>> vec = np.random.randint(2**8, size=3)
>>> denominator = np.full(3, 8)
>>> divided = vec / denominator
>>> ints = divided.astype(int)
>>> ints *= denominator
>>>
>>> vec
array([205, 182,  99])
>>> ints
array([200, 176,  96])

有没有更快的方法来量化这些numpy向量? 我非常感谢其他人可以就这个问题分享的任何想法。

假设您的缩减因子是2的幂,则您显示的操作相当于清除最后几位。 这可以使用按位和运算符&而一步完成。 您可以使用Python二进制文字0b11111000256 - denominator直接指定位掩码。 所以,感谢numpy广播你需要做的就是

vec & (256 - denominator)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM