在对音频或图像阵列进行一些处理之后,需要先在一定范围内对其进行标准化,然后才能将其写回到文件中。可以这样完成:
audio[:,0] = audio[:,0]/abs(audio[:,0]).max() audio[:,1] = audio[:,1]/abs(audio[:,1]).max()
image = image/(image.max()/255.0) 有没有那么繁琐,方便的函数来做到这一点?matplotlib.colors.Normalize()似乎无关。 问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
audio /= np.max(np.abs(audio),axis=0) image = (255.0/image.max()) 使用/=和=可以消除中间的临时阵列,从而节省了一些内存。乘法比除法便宜,所以
image *= 255.0/image.max() # Uses 1 division and image.size multiplications 比...快一点
image /= image.max()/255.0 # Uses 1+image.size divisions 由于我们在这里使用基本的numpy方法,因此我认为这是尽可能有效的numpy解决方案。
就地操作不会更改容器数组的dtype。由于所需的规范化值是浮点型,因此在执行就地操作之前,audioand image数组必须具有浮点dtype。如果它们还不是浮点dtype,则需要使用进行转换astype。例如,
image = image.astype('float64')