【Python】MFCC算法需要用到的库函数

在看mfcc实现代码的时候有一些函数感觉记一下用法比较好,于是从官方文档搬运一下。

计算类

numpy.log
numpy.log(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj]) = <ufunc 'log'>

自然对数。 自然对数log是指数函数的倒数,因此log(exp(x)) = x。自然对数是以e为底的对数。
在这里插入图片描述

np.log([1, np.e, np.e**2, 0])
array([  0.,   1.,   2., -Inf])

numpy.power
numpy.power(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj]) = <ufunc 'power'>

第一个数组元素从第二个数组开始逐元素乘幂。 将x1中的每个基数提升到x2中位置对应的幂。x1和x2必须可扩展为相同的形状。 整数类型的负整数次幂将引发ValueError。 非整数值的负值将返回nan。要获得复杂的结果,请将输入转换为complex,或者将dtype指定为complex(请参见下面的示例)。
在这里插入图片描述

x1 = np.arange(6)
x1
[0, 1, 2, 3, 4, 5]
np.power(x1, 3)
array([  0,   1,   8,  27,  64, 125])

#可以用**来表示
x2 = np.array([1, 2, 3, 3, 2, 1])
x1 = np.arange(6)
x1 ** x2
array([ 0,  1,  8, 27, 16,  5])

numpy.fft
fft.fft(a, n=None, axis=- 1, norm=None)

计算一维离散傅立叶变换。
该函数使用高效的快速傅里叶变换(FFT)算法[CT]计算一维n点离散傅里叶变换(DFT)。
FFT(快速傅立叶变换)是指一种通过在计算项中使用对称性来有效计算离散傅立叶变换(DFT)的方法。当n是2的幂时,对称性最高,因此对于这些尺寸,变换是最有效的。 在numpy.fft模块的文档中定义了DFT,以及该实现中使用的约定。
在这里插入图片描述

#eg1
np.fft.fft(np.exp(2j * np.pi * np.arange(8) / 8))
array([-2.33486982e-16+1.14423775e-17j,  8.00000000e+00-1.25557246e-15j,
        2.33486982e-16+2.33486982e-16j,  0.00000000e+00+1.22464680e-16j,
       -1.14423775e-17+2.33486982e-16j,  0.00000000e+00+5.20784380e-16j,
        1.14423775e-17+1.14423775e-17j,  0.00000000e+00+1.22464680e-16j])

#eg2
import matplotlib.pyplot as plt
t = np.arange(256)
sp = np.fft.fft(np.sin(t))
freq = np.fft.fftfreq(t.shape[-1])
plt.plot(freq, sp.real, freq, sp.imag)
[<matplotlib.lines.Line2D object at 0x...>, <matplotlib.lines.Line2D object at 0x...>]
plt.show()

numpy.dot
numpy.dot(a, b, out=None)

矩阵点乘

a = [[1, 0], [0, 1]]
b = [[4, 1], [2, 2]]
np.dot(a, b)
array([[4, 1],
       [2, 2]])

numpy.floor
numpy.floor(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj]) = <ufunc 'floor'>

简单说就是向下取整

a = np.array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0])
np.floor(a)
array([-2., -2., -1.,  0.,  1.,  1.,  2.])

dct
scipy.fft.dct(x, type=2, n=None, axis=- 1, norm=None, overwrite_x=False, workers=None, orthogonalize=None)

返回任意类型序列x的离散余弦变换。
在这里插入图片描述
对于 type in {1, 2, 3}, norm=“ortho” ,norm =“ ortho”与直接傅立叶变换打破了直接对应关系。要恢复它,必须指定orthogonalize=False.。


功能类

numpy.linspace
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)

返回指定间隔内的等间隔数字。
返回以间隔[start, stop]计算的num个均匀间隔的样本。
间隔的端点可以选择排除。
版本1.16.0中的更改:现在支持非标量的start和stop。
参数与返回值

>>> np.linspace(2.0, 3.0, num=5)
array([2.  , 2.25, 2.5 , 2.75, 3.  ])
>>> np.linspace(2.0, 3.0, num=5, endpoint=False)
array([2. ,  2.2,  2.4,  2.6,  2.8])
>>> np.linspace(2.0, 3.0, num=5, retstep=True)
(array([2.  ,  2.25,  2.5 ,  2.75,  3.  ]), 0.25)

numpy.zeros
numpy.zeros(shape, dtype=float, order='C')

返回指定形状和数据类型的新数组,用0填充。
参数与返回

>>>
>>> np.zeros(5)
array([ 0.,  0.,  0.,  0.,  0.])
>>>
>>> np.zeros((5,), dtype=int)
array([0, 0, 0, 0, 0])
>>>
>>> np.zeros((2, 1))
array([[ 0.],
       [ 0.]])
>>>
>>> s = (2,2)
>>> np.zeros(s)
array([[ 0.,  0.],
       [ 0.,  0.]])
>>>
>>> np.zeros((2,), dtype=[('x', 'i4'), ('y', 'i4')]) # custom dtype
array([(0, 0), (0, 0)],
      dtype=[('x', '<i4'), ('y', '<i4')])

注意:zeros与empty不同的是,zeors会初始化数组中的值为0,empty不会做初始化,需要手动去初始化,性能可能会稍微有点提升,这点是它们的区别,但它们的作用相同的。


numpy.finfo

finfo函数是根据括号中的类型来获得信息,获得符合这个类型的数型

#输入
import numpy as np
a=np.array([[1],[2],[-1],[0]])
b=np.maximum(a,np.finfo(np.float32).eps)
print(b)

#输出
[[1.0000000e+00]
 [2.0000000e+00]
 [1.1920929e-07]
 [1.1920929e-07]]
	

numpy.where
numpy.where(condition, [x, y, ]/)

根据条件返回从x或y中选择的元素。
当只提供condition时,这个函数是np.asarray(condition).nonzero()的简写。最好直接使用非零值,因为它对子类来说是正确的。本文档的其余部分仅涵盖提供了所有三个参数的情况。
在这里插入图片描述


参考来源:
NumPy Reference — NumPy v1.24.dev0 Manual
Python-CJavaPy

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值