Numpy学习笔记1-numpy入门

之前做音频信号处理以及模式识别的时候主要使用MATLAB工具,MATLAB是一个非常强大的数学计算工具,并且他完美的加入了音频信号,图像信号处理的函数,例如fft函数,dft函数,这些函数直接调用就可以了,详情请参考宋知用老师的《MATLAB在语音信号分析和合成中的应用》 ,这里先不多介绍了,以后时间够的话,我再来与大家分享。
MATLAB在数学计算方面固然强大,但是我个人认为他在其他方面的应用能力相对于python来说就要差一些。就用一个我自己经历的例子来说,我们当时想要做app音频模式识别,很明显无论是在手机本地识别还是迁移到云端识别MATLAB都是做不到的(可能因为我才疏学浅,并没有了解到,有了解的朋友可以在下面探讨)。虽然MATLAB在2012后就可以转化为java或者c代码,但是转换成的java代码需要加载matlab所用的jar包,或者要求你本地装有MATLAB程序,经过我们的努力,最总还是没有成功迁移到安卓平台上面去。后来我们转换成为C++代码,采用NDK的方式调用这些模式识别的代码,中间成功过几次,但是这里面有很多坑,而且当时我们团队内部的一些原因(这些不方便说),这个也失败了,我也没有细究这个方法行不行。最后是我自己在网上找的fft java代码,还有一部分靠我自己手动编码调试、实现的。我本来是做数据的,做模式识别的,那一段时间在信号这条路上越走越远。不过现在想来,我再接触一些其他的东西,例如即将要说的numpy,pandas,后面可能会说的R,weka确实很亲切。上面的问题如果你用python就可以使用网络编程实现这些,直接在后台处理,python中处理数据能力也很强大。
咳…  扯远了,下面我们正式说一下numpy,numpy给我的第一印象是矩阵。所以前面扯MATLAB,我希望将二者进行比较,这个可以加快理解速度。
我们先来讲第一部分,如果没有学过python的同学们,请先看看一些python的基础知识,再来看这些。
NumPy,是 Numerical Python的简称,是一个高性能科学计算和数据分析的包,我个人也认为他是pandas的基础。他的数据形式有点像python里面的列表。

例如执行一下代码
data1=[2,3,4,5]
data2=[6,7,8,9]
print data1+data2
结果为[2, 3, 4, 5, 6, 7, 8, 9]
而如果我们执行下面的代码
ndata1=numpy.array(data1)
ndata2=numpy.array(data2)
print ndata1+ndata2
得到的结果是[ 8 10 12 14]
由此可知,numpy更像是矩阵之间的运算

正如前面的代码所示,创建numpy数据的方法可以使用numpy.array(array)
如果不是显示说明的话,numpy会自动给数据选择一个合适的类型

print ndata1.dtype
#得到的结果为float64
当然你也可以像MATLAB那样使用ones创建全为1的矩阵,zeros创建全为0的矩阵,使用eye创建单位方阵。

如果两个ndarray进行*运算,得到的结果并不是两个矩阵间的运算,而是与加法一样,两个矩阵相同索引的数据进行惩罚运算。
那么如果我需要两个矩阵之间进行乘法运算,那么该怎么办呢? Numpy中提供了dot()函数,可以以下代码
print ndata1.dot(ndata2.T)  #相当于numpy.dot(ndata1,ndata2)
得到结果110,以后我们在numpy中的线性代数用法中还会详细介绍。
下一篇我们会详细介绍numpy中的各种用法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值