Numpy快速入门

Numpy快速入门

一、关于Numpy

Numpy是Python第一个矩阵类型,提供了大量矩阵处理的函数。非正式地来说,它是一个使运算更easy,执行速度更快的库,因为它的内部运算是通过C语言实现的。

numpy包含了两种基本的数据类型:矩阵和数组。二者在处理上稍有不同,如果你熟悉MATLAB的话,矩阵的处理不是难事。在使用标准的Python时,处理这两种数据类型都需要循环,而在numpy中则可以省略这些语句。

二、简单使用数组Array

处理数组的一些例子:

>>> from numpy import array
>>> mm = array((1,1,1))
>>> nn = array((1,2,3))
>>> mm + nn
array([2, 3, 4])

而如果只用Python常规处理的话,上述过程则必须使用for循环。

对每个元素乘以2:

>>> mm * 2
array([2, 2, 2])

对每个元素平方:

>>> nn ** 2
array([1, 4, 9])

可以像访问列表易于访问数组里的元素:

>>> nn[1]
2

Numpy也支持多维数组:

>>> jj = array([[1,2,3],[1,1,1]])
>>> jj
array([[1, 2, 3],
       [1, 1, 1]])

多维数组中的元素也可以像列表一样访问:

>>> jj[0]
array([1, 2, 3])

>>> jj[0][1]
2

也可以用矩阵方式访问:

>>> jj[0,1]
2

当把两个数组乘起来的时候,两个数组的元素将对应相乘:

>>> a1 = array([1,2,3])
>>> a2 = array([3,4,5])
>>> a1 * a2
array([ 3,  8, 15])

三、简单使用矩阵matrix

导入:

>>> from numpy import mat ,matrix

关键字mat是matrix的缩写。

>>> ss = mat([1,2,3])
>>> ss
matrix([[1, 2, 3]])
>>> mm = matrix([1,2,3])
>>> mm
matrix([[1, 2, 3]])

可以访问矩阵中的单个元素:

>>> mm[0,1] # 0代表第0行
2

可以把Python列表转成Numpy矩阵:

>>> pyList = [5,11,13]
>>> mat(pyList)
matrix([[ 5, 11, 13]])

试试上面两个矩阵相乘:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\numpy\matrixlib\defmatrix.py", line 343, in __mul__
    return N.dot(self, asmatrix(other))
ValueError: shapes (1,3) and (1,3) not aligned: 3 (dim 1) != 1 (dim 0)

可以看到,矩阵数据类型的运算会强制执行数学中的矩阵运算。矩阵相乘的必要条件是左边矩阵的列数和右边矩阵的行数必须相等。这时候需要将其中的一个矩阵转置,numpy数据类型中有一个转置的方法:

>>> mm * ss.T
matrix([[14]])

这样就调用了.T完成了对ss的转置。

知道矩阵的大小有助于上述错误的调试,可以通过numpy中的shape方法来查看矩阵或者数组的维数:

>>> from numpy import shape
>>> shape(mm)
(1, 3)

如果需要把矩阵mm的每个元素和矩阵ss的每个元素对应相乘应该怎么办呢?这就是所谓的元素相乘法,可以使用Numpy的multiply方法:

>>> from numpy import multiply
>>> multiply(mm,ss)
matrix([[1, 4, 9]])

此外,矩阵和数组还有很多有用的方法,如排序:

>>> mm.sort()
>>> mm
matrix([[1, 2, 3]])

这种排序方法是原地排序(即排序后的结果占用原始的数据空间),所以如果希望保留数据的原序,则必须事先做一份拷贝。也可以用argsort()方法得到矩阵中每个元素的排序序号:

>>> dd = mat([4,5,1])
>>> dd.argsort()
matrix([[2, 0, 1]])

可以计算矩阵的均值:

>>> dd.mean()
3.3333333333333335

再回顾下多维数组:

>>> jj = mat([[1,2,3],[8,8,8]])
>>> jj
matrix([[1, 2, 3],
        [8, 8, 8]])
>>> shape(jj)
(2, 3)

这是一个2行3列的数组,如果想取出其中一行的元素,可以使用冒号(:)操作符和行号来完成。
例如,要取出第一行元素,应该输入:

>>> jj[1:]
matrix([[8, 8, 8]])
>>> jj[1,0:3]
matrix([[8, 8, 8]])

还可以指定要取出元素的范围。如果想要取出第一行第0列和第1列的元素,可以使用下面的语句:

>>> jj[1,0:2]
matrix([[8, 8]])

这种索引方式能够简化numpy的编程。在数组和矩阵数据类型之外,Numpy还提供了其他有用的方法。

建议浏览完整的官方文档 : http://docs.scipy.org/doc/

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
快速入门Python,你可以按照以下步骤进行: 1. 安装Python:首先,你需要在你的计算机上安装Python。你可以从Python官方网站(https://www.python.org)下载最新版本的Python,并按照安装向导进行安装。 2. 学习基本语法:一旦安装完成,你可以开始学习Python的基本语法。Python是一种易于学习和阅读的编程语言,你可以通过在线教程、书籍或视频教程来学习。了解Python的基本语法,如变量、数据类型、条件语句、循环语句等。 3. 练习编写代码:通过编写简单的代码来练习和巩固所学的知识。你可以尝试编写一些小程序,如打印输出、计算器、简单的游戏等。这样可以帮助你熟悉Python的语法和编程思想。 4. 使用Python库和框架:Python有丰富的第三方库和框架,可以帮助你更高效地开发应用程序。例如,NumPy用于科学计算,Pandas于数据分析,Django用于Web开发等。学习并使用这些库和框架可以提高你的开发效率。 5. 参与项目或实践:参与开源项目或实践项目是提高编程能力的好方法。你可以加入一些开源项目,其他开发者合作,学习他们的经验和技巧。此外,你还可以尝试解决一些实际问题,如自动化任务、数据处理等。 6. 持续学习和提升:Python是一门广泛应用于各个领域的编程语言,它的生态系统不断发展和更新。因此,持续学习和提升是非常重要的。你可以阅读相关的技术博客、参加培训课程、参加技术社区等,以保持对Python的了解和掌握。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值