最近,我已经从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。
关于这个问题,我有两个问题。
Q1. 为什么float是8字节而不是4字节,这可能会让C/C++程序员感到困惑?
Q2. 我为什么不能使用dtype=float32呢?这给我带来了错误。好像我应该使用dtype=np.float32?
谢谢!