numpy基础教程—其它相关函数
来源:互联网 发布:mac视频投放led 编辑:程序博客网 时间:2024/05/08 08:38
本教程适合于numpy基础入门,更多详尽内容请阅读官网http://www.numpy.org/,此篇为numpy基础学习教程系列之其它相关函数篇,倾向于实践用法,后续还会推出一系列numpy其它方面的教程,欢迎广大圈友一起交流学习,并指出其中的错误。
注意:以下np为import numpy as np中的np标识符
傅里叶变换
np.fft.fft(array):对信号array进行傅里叶变换
np.fft.ifft(transformed):还原信号
注意:numpy.linalg模块中的fftshift函数可以将FFT输出中的直流分量移动到频谱的中央,ifftshift函数是其逆操作排序函数
numpy.lexsort函数支持对数组按指定行或列的顺序排序,是间接排序,lexsort不修改原数组,返回索引。
注意:如果参数为元组,最后一个作为主要的排序的key,倒数第二个作为次要的排序的key
注意:对于多维数组排序,默认按最后一行元素由小到大排序,返回最后一行元素排序后索引所在位置。返回的索引数组ind,则a[ind]就是排序后的数组。
import numpy as np
>>> a
array([[2, 7, 4, 2],
[35, 9, 1, 5],
[22,12, 3, 2]])
按最后一列顺序排序
>>>a[np.lexsort(a.T)]
array([[2, 7, 4, 2],
[35, 9, 1, 5],
[22,12, 3, 2]])
按最后一列逆序排序
>>>a[np.lexsort(-a.T)]
array([[35, 9, 1, 5],
[2, 7, 4, 2],
[22,12, 3, 2]])
按第一列顺序排序
>>> a[np.lexsort(a[:,::-1].T)]
array([[2, 7, 4, 2],
[22,12, 3, 2],
[35, 9, 1, 5]])
按最后一行顺序排序
>>>a.T[np.lexsort(a)].T
array([[2, 4, 7, 2],
[5, 1, 9, 35],
[2, 3, 12, 22]])
按第一行顺序排序
>>>a.T[np.lexsort(a[::-1,:])].T
array([[2, 2, 4, 7],
[5, 35, 1, 9],
[2, 22, 3, 12]]
np.sort(array):对数组array进行排序,返回排序后的视图,并不改变原数组。
array.sort():对数组array进行排序,原地排序。
np.msort(array):对数组array进行排序,返回排序后的视图,并不改变原数组。
np.argsort(array):间接排序,返回排序后的索引数组。
np.sort_complex(complex_numbers):对复数进行排序,先按照实部后虚部的顺序进行排序。网格函数
np.meshgrid用于从数组a和b产生网格。生成的网格矩阵A和B大小是相同的。它也可以是更高维的。
[A,B]=np.meshgrid(a,b)
生成size(b)* size(a)大小的矩阵A和B。它相当于a从一行重复增加到size(b)行,把b转置成一列再重复增加到size(a)列。因此命令等效于:
A=np.mat(np.ones(np.size(b))).T*a;
B=np.mat(b).T*np.ones(np.size(a))
如下所示:
>> a=np.arange(1,3,1)
a =
1 2
>> b=np.arange(3,6,1)
b =
3 4 5
>> [A,B]=meshgrid(a,b)
A =
1 2
1 2
1 2
B =
3 3
4 4
5 5
>> [B,A]=meshgrid(b,a)
B =
3 4 5
3 4 5
A =
2 2 2
计算卷积
numpy.convolve(a,v, mode=’full’):numpy函数中的卷积函数库
参数:
a:(N,)输入的一维数组
b:(M,)输入的第二个一维数组
mode:{‘full’, ‘valid’, ‘same’}参数可选
‘full’ 默认值,返回每一个卷积值,长度是N+M-1,在卷积的边缘处,信号不重叠,存在边际效应。
‘same’ 返回的数组长度为max(M, N),边际效应依旧存在。
‘valid’ 返回的数组长度为max(M,N)-min(M,N)+1,此时返回的是完全重叠的点,边缘点无效。
公式:
其中,k-m 0,m 0,k的最大值为N+M-2
实例:
a = np.arange(4)
b = np.array([2,3,1,5])
print np.convolve(a,b)
结果:[0,2,7,13,16,13,15]
自定义ufunc函数
np.frompyfunc(func,nin,nout):将一个计算单个元素的函数转换为ufunc函数。
参数:func—函数
nin—输入参数的个数
nout—func返回值的个数
实例:
def triangle_wave(x,c,c0,hc):
x= x-int(x) #周期为1,取小数部分计算
ifx>=c:
R=0.0
elif:x<c0:
R = x/c0*hc
else:
r = (c-x)/(c-c0)*hc
returnr
triangle_wave_ufunc =np.frompyfunc(triangle_wave,4,1)
x = np.linspace(0,2,100)
y2 = triangle_wave_ufunc(x,0.6,0.4,1.0)
注意:triangle_wave_ufunc所返回数组的元素类型是object,因此还需要调用数组的astype()方法将其转换为双精度浮点数组。np.vectorize()函数
使用vectorize( )可以实现和frompyfunc()类似的功能,但它可以通过otypes参数指定返回数组的元素类型。otypes参数可以是一个表示元素类型的字符串,也可以是一个类型列表,使用列表可以描述多个返回数组的元素类型,如将上面的代码改成vectorize(),则为:
triangle_wave_vec = np.vectorize(triangle_wave,otypes=[np.float])
x = np.linspace(0,2,100)
y3 = triangle_wave_vec(x,0.6,0.4,1.0)窗函数:窗函数是信号处理领域常用的数学函数,这些窗函数在给定的区间之外取值为0
巴特利特窗是一种三角形平滑窗
window = np.bartlett(42)
布莱克曼窗形式上为三项余弦值的加和
black = np.blackman(num):该函数唯一的参数就是输出点的数量,如果数量为0或小于0,则返回一个空数组。
汉明窗(Hammingwindow)形式上是一个加权的余弦函数,公式如下:
Numpy中的hamming函数返回汉明窗。该函数唯一的参数就是输出点的数量,如果参数为0或小于0,则返回一个空数组。
凯泽窗是以贝塞尔函数定义的,公式如下:
这里的I0即为零阶的贝塞尔函数。NumPy中的kaiser函数返回凯泽窗。该函数的第一个参数为输出点的数量。如果数量为0或小于0,则返回一个空数组。第二个参数为β值。
注意:np.i0(array):i0位第一类修正的零阶贝塞尔函数。
- numpy基础教程—其它相关函数
- Numpy基础教程 — 线性代数
- numpy基础教程—多项式
- numpy 相关函数
- numpy基础教程—概率分布
- numpy基础教程—统计方法
- numpy基础教程—算术运算
- Numpy 基础教程
- Numpy 基础教程
- Numpy基础教程
- numpy数据相关函数总结
- python学习(八)----numpy模块相关函数
- Python中numpy相关函数总结
- python numpy 基础教程
- Numpy 基础教程 array
- python numpy 基础教程
- numpy基础教程—矩阵的简单属性和方法
- numpy基础教程—数组(向量)的属性和方法
- php 自定义函数 和 系统函数 的变量从内存释放
- angularJs-----$filter过滤器使用 自定义过滤器
- Codeforces898A-Rounding
- 2017-12-19日 MovieTaster
- 基于SpringBoot框架的单元测试和集成测试的区别和联系
- numpy基础教程—其它相关函数
- Android 中查询数据库时Cursor类的使用
- EMQ代理服务器在Windows7 64系统下的安装和启动
- jstack诊断weblogic连接池满的问题
- VB.net中使用正则表达式验证邮箱地址是否合法
- jqueryUI互动效果之selectable
- [bigdata-124] docker+django2.0 构建web服务
- LC射频滤波器调试经验
- mvninstall项目报 编码GBK的不可映射字符