网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的考试资料:

 

标题 Python中的Numpy入门教程
内容
    这篇文章主要介绍了Python中的Numpy入门教程,着重讲解了矩阵中的数组操作,需要的朋友可以参考下
    1、Numpy是什么
    很简单,Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy、matplotlib一起使用。其实,list已经提供了类似于矩阵的表示形式,不过numpy为我们提供了更多的函数。如果接触过matlab、scilab,那么numpy很好入手。在以下的代码示例中,总是先导入了numpy:
    代码如下:
    >>>importnumpyasnp
    >>>printnp.version.version
    1.6.2
    2、多维数组
    多维数组的类型是:numpy.ndarray。
    使用numpy.array方法
    以list或tuple变量为参数产生一维数组:
    代码如下:>>>printnp.array([1,2,3,4])
    [1234]
    >>>printnp.array((1.2,2,3,4))
    [1.22.3.4.]
    >>>printtype(np.array((1.2,2,3,4)))
    <type'numpy.ndarray'>
    以list或tuple变量为元素产生二维数组:
    代码如下:
    >>>printnp.array([[1,2],[3,4]])
    [[12]
    [34]]
    生成数组的时候,可以指定数据类型,例如numpy.int32,numpy.int16,andnumpy.float64等:
    代码如下:
    >>>printnp.array((1.2,2,3,4),dtype=np.int32)
    [1234]
    使用numpy.arange方法
    代码如下:
    >>>printnp.arange(15)
    [01234567891011121314]
    >>>printtype(np.arange(15))
    <type'numpy.ndarray'>
    >>>printnp.arange(15).reshape(3,5)
    [[01234]
    [56789]
    [1011121314]]
    >>>printtype(np.arange(15).reshape(3,5))
    <type'numpy.ndarray'>
    使用numpy.linspace方法
    例如,在从1到3中产生9个数:
    代码如下:
    >>>printnp.linspace(1,3,9)
    [1.1.251.51.752.2.252.52.753.]
    使用numpy.zeros,numpy.ones,numpy.eye等方法可以构造特定的矩阵
    例如:
    代码如下:
    >>>printnp.zeros((3,4))
    [[0.0.0.0.]
    [0.0.0.0.]
    [0.0.0.0.]]
    >>>printnp.ones((3,4))
    [[1.1.1.1.]
    [1.1.1.1.]
    [1.1.1.1.]]
    >>>printnp.eye(3)
    [[1.0.0.]
    [0.1.0.]
    [0.0.1.]]
    创建一个三维数组:
    代码如下:
    >>>printnp.zeros((2,2,2))
    [[[0.0.]
    [0.0.]]
    [[0.0.]
    [0.0.]]]
    获取数组的属性:
    代码如下:
    >>>a=np.zeros((2,2,2))
    >>>printa.ndim#数组的维数
    3
    >>>printa.shape#数组每一维的大小
    (2,2,2)
    >>>printa.size#数组的元素数
    8
    >>>printa.dtype#元素类型
    float64
    >>>printa.itemsize#每个元素所占的字节数
    8
    数组索引,切片,赋值
    示例:
    代码如下:
    >>>a=np.array([[2,3,4],[5,6,7]])
    >>>printa
    [[234]
    [567]]
    >>>printa[1,2]
    7
    >>>printa[1,:]
    [567]
    >>>printa[1,1:2]
    [6]
    >>>a[1,:]=[8,9,10]
    >>>printa
    [[234]
    [8910]]
    使用for操作元素
    代码如下:
    >>>forxinnp.linspace(1,3,3):
    ...printx
    ...
    1.0
    2.0
    3.0
    基本的数组运算
    先构造数组a、b:
    代码如下:
    >>>a=np.ones((2,2))
    >>>b=np.eye(2)
    >>>printa
    [[1.1.]
    [1.1.]]
    >>>printb
    [[1.0.]
    [0.1.]]
    数组的加减乘除:
    代码如下:
    >>>printa>2
    [[FalseFalse]
    [FalseFalse]]
    >>>printa+b
    [[2.1.]
    [1.2.]]
    >>>printa-b
    [[0.1.]
    [1.0.]]
    >>>printb*2
    [[2.0.]
    [0.2.]]
    >>>print(a*2)*(b*2)
    [[4.0.]
    [0.4.]]
    >>>printb/(a*2)
    [[0.50.]
    [0.0.5]]
    >>>print(a*2)**4
    [[16.16.]
    [16.16.]]
    使用数组对象自带的方法:
    代码如下:
    >>>a.sum()
    4.0
    >>>a.sum(axis=0)#计算每一列(二维数组中类似于矩阵的列)的和
    array([2.,2.])
    >>>a.min()
    1.0
    >>>a.max()
    1.0
    使用numpy下的方法:
    代码如下:
    >>>np.sin(a)
    array([[0.84147098,0.84147098],
    [0.84147098,0.84147098]])
    >>>np.max(a)
    1.0
    >>>np.floor(a)
    array([[1.,1.],
    [1.,1.]])
    >>>np.exp(a)
    array([[2.71828183,2.71828183],
    [2.71828183,2.71828183]])
    >>>np.dot(a,a)##矩阵乘法
    array([[2.,2.],
    [2.,2.]])
    合并数组
    使用numpy下的vstack和hstack函数:
    代码如下:
    >>>a=np.ones((2,2))
    >>>b=np.eye(2)
    >>>printnp.vstack((a,b))
    [[1.1.]
    [1.1.]
    [1.0.]
    [0.1.]]
    >>>printnp.hstack((a,b))
    [[1.1.1.0.]
    [1.1.0.1.]]
    看一下这两个函数有没有涉及到浅拷贝这种问题:
    代码如下:
    >>>c=np.hstack((a,b))
    >>>printc
    [[1.1.1.0.]
    [1.1.0.1.]]
    >>>a[1,1]=5
    >>>b[1,1]=5
    >>>printc
    [[1.1.1.0.]
    [1.1.0.1.]]
    可以看到,a、b中元素的改变并未影响c。
    深拷贝数组
    数组对象自带了浅拷贝和深拷贝的方法,但是一般用深拷贝多一些:
    代码如下:>>>a=np.ones((2,2))
    >>>b=a
    >>>bisa
    True
    >>>c=a.copy()#深拷贝
    >>>cisa
    False
    基本的矩阵运算
    转置:
    代码如下:
    >>>a=np.array([[1,0],[2,3]])
    >>>printa
    [[10]
    [23]]
    >>>printa.transpose()
    [[12]
    [03]]
    迹:
    代码如下:>>>printnp.trace(a)
    4
    numpy.linalg模块中有很多关于矩阵运算的方法:
    代码如下:
    >>>importnumpy.linalgasnplg
    特征值、特征向量:
    代码如下:
    >>>printnplg.eig(a)
    (array([3.,1.]),array([[0.,0.70710678],
    [1.,-0.70710678]]))3、矩阵
    numpy也可以构造矩阵对象,这里不做讨论。
随便看

 

在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/22 3:37:09