仅作为记录,大佬请跳过。
博主在运行程序时,出现这种错误:
(程序是获取一个音频文件数据data之后,想对data的值进行归一化)
说明数据是只读,不可修改。
查看
(此程序只做说明,不能运行,因为有个写的包soundBase)
from soundBase import *
from end_detection import *
data, fs = soundBase('C4_1_y.wav').audioread()
data /= np.max(data)
通过data.flags
,查看data的状态,发现
from soundBase import *
from end_detection import *
data, fs = soundBase('C4_1_y.wav').audioread()
print(data.flags)
data /= np.max(data)
发现“写操作”被禁止了:
而平常可写的例子:(此程序可直接运行)
import numpy as np
x=np.random.rand(5)
print(x.flags)
print('ok')
这个的WRITEABLE是True:
——————————————————————————————————
初步解决:
加入
b = np.frombuffer(data, dtype='int16')
c = b.copy()
print(c.flags)
即:
参考两个大佬博主解决方案的博文:
————————————————————————————————————————————————
最终解决
新建一个temp变量,让不可改变的data操作后仍不放在data里,而是放在temp里
(最后data=tempp
这个为什么能赋给data值,博主还没有搞懂。)