def spread_bitsv(ival, level): res = np.zeros_like(ival, dtype='int64') for i in range(level): ares = np.bitwise_and(ival, 1<<i) << (i*2) np.bitwise_or(res, ares, res) return res