duh*_*ime 5 python numpy vector
我有大量的 numpy 向量,每个形状 (3,) 具有 8 位整数值:
vec = np.random.randint(2**8, size=3)
Run Code Online (Sandbox Code Playgroud)
我想通过一些已知的缩减因子将这些向量量化到更小的空间。我知道我可以通过定义另一个带有定义信息丢失量的值的向量,除以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])
Run Code Online (Sandbox Code Playgroud)
有没有更快的方法来量化这些 numpy 向量?对于其他人可以就这个问题分享的任何想法,我将不胜感激。
假设您的缩减因子是 2 的幂,则您显示的操作相当于清除最后几位。这可以使用按位和运算符一步完成&。您可以直接使用 Python 二进制文字0b11111000或 do指定位掩码256 - denominator。所以多亏了 numpy 广播,你需要做的就是
vec & (256 - denominator)
Run Code Online (Sandbox Code Playgroud)