python - 如何将 4 位数据加载到 numpy 数组中

标签 python arrays numpy complex-numbers

我有一个包含 8 位复杂样本的二进制数据文件——即4 位和 4 位用于从 MSB 到 LSB 的虚部和实部(Q 和 I)分量。

如何将这些数据放入 numpy 复数数组中?

最佳答案

不支持计算 8 位复数(4 位实数,4 位虚数)。 因此,以下方法是一种有效地将它们读入单独的 numpy 数组以用于复数和虚数的好方法。

values = np.fromfile("filepath", dtype=int8)
real = np.bitwise_and(values, 0x0f)
imag = np.bitwise_and(values >> 4, 0x0f)

那么如果你想要一个复杂的数组,

signal = real + 1j * imag

这里有更多方法可以将两个实数数组转换为复数数组:https://stackoverflow.com/a/2598820/1131073


如果值是可能为负的 4 位整数(即应用二进制补码),您可以使用算术位移来正确分离两个 channel :

real = (np.bitwise_and(values, 0x0f) << 4).astype(np.int8) >> 4
imag = np.bitwise_and(values, 0xf0).astype(int) >> 4

关于python - 如何将 4 位数据加载到 numpy 数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26369520/

相关文章:

python - Pandas 数据框的随机抽样(行和列)

python - 对多个文件运行 Python 单元测试

python - list.remove 与任意类的奇怪行为 - 比较对象

python - 如何在 jinja2/flask 中获取当前 URL(request.url 不起作用)

python - 如何将列表中元组中的整数与字典中另一个列表中另一个元组中的另一个整数进行比较?

javascript - HTTP Request JS - 如何从列表中提取数字,将它们保存到变量中并使用它们进行进一步处理?

javascript - 使用 array.map 填充数组的值

python - 使用 format() 打印 numpy timedelta64

javascript - 将 Array 序列化为元素,使用 RxJS 进行转换,并将元素组装回数组

python - numpy:ndarray.choose 增加数组大小?