【发布时间】:2023-03-28 22:47:01
【问题描述】:
这些天,我已经从 Matlab 切换到 NumPy/SciPy。
今天,我在尝试加载以“二进制格式”存储的数据时遇到了一个奇怪的问题。音频数据以 4 字节单精度浮点数 格式存储。我先尝试了以下方法。
data = np.fromfile('out.raw', dtype=float) # This is wrong
plt.plot(data)
但它没有用。经过一番搜索,我尝试了以下方法,它按预期工作:
data = np.fromfile('out.raw', dtype=np.float32) # This is okay.
plt.plot(data)
根据我之前使用 C/C++ 的经验,我曾预计“float”是 4 字节单精度浮点类型。但事实证明,float 是 8 字节数据,在上述情况下,我应该使用 np.float32。
对此我有两个问题。
第一季度。 为什么浮点数是 8 字节而不是 4 字节,这可能会让 C/C++ 程序员感到困惑?
第二季度。 为什么我不能使用 dtype=float32。这会给我带来一个错误。我似乎应该使用 dtype=np.float32?
谢谢!
【问题讨论】:
标签: python numpy binary floating-point