美文网首页人工智能
Python 人工智能应用快速入门(三)Numpy(1)

Python 人工智能应用快速入门(三)Numpy(1)

作者: 机器树 | 来源:发表于2018-11-11 03:08 被阅读3次

    今天还接着和大家分享python快速入门的一些练习。接着上次提到的四个container接着说,在讲numpy 之前,我们简单了解一下函数function和类class的使用。由于科学计算或者AI应用中,遇到类的使用不多,我们简单看一下使用方式,更多信息参考提供的链接。以下分析和练习部分参考python官网,scipy 官网,斯坦福大学python入门讲解。

    函数方面,定义的时候,def 关键字打头,因为python变量不用声明类型,自然也跟C语言不同,没有返回类型。然后是函数名和参数,同样,也不需要声明参数类型,然后冒号即可,后面加函数主体。

    函数调用的时候,使用函数名和参数调用即可。

    更多关于函数的介绍,参考这个了:https://docs.python.org/3.7/tutorial/controlflow.html#defining-functions

    类的介绍,就非常简单了。关键字class打头,类名,括号里关键字object,里面包含两个函数,一个initial函数,注意前后是两个下划线,传入两个参数。后面可以自己创造多个函数。具体的更多的知识可以参考官网:https://docs.python.org/3.7/tutorial/classes.html

    下面就来一起看一下numpy的常用操作,由于包含的内容很多,numpy我们分两次练习学习。

    最基本的:

    import numpy as np        #引入numpy

    然后:

    a = np.array([2, 4, 6])  

    # 创造一个一维的向量,注意格式,是array,不是arrays,然后用小括号括起来,里面的数组用中括号

    值得注意的是有时候矩阵或者数组的操作报错,可能是由于矩阵的size不合适或者不匹配,常用的,调用numpy的shape函数查看其大小。注意shape后面没有括号。

    其他需要理解的就是和线性代数里面的矩阵结合起来,行列的空间的想象,尤其遇到多维的情况,比如抽取某一维的所有元素,或者某一部分元素,这些都会经常用到,后面slicing部分会看到。

    然后,numpy自带了很多生成特殊数组的函数,比如全0,全1,单位矩阵,元素相同的矩阵,随机矩阵等等。其中随机矩阵在某些初始化随机操作中经常会使用到。

    c = np.zeros((2,2))   #两行两列全为0

    d = np.ones((1,2))    #创造一个一行两列的全是1的数组

    生成了矩阵,然后就是如何访问矩阵中的元素,比如根据索引访问某一个元素,或者访问某一维度的所有元素,像二维矩阵的某一行或者某一列,用到类似于list的slicing操作,但list的操作没有numpy.array这么强大。还有比如取出某一些索引项的矩阵的值。

    print (a[1,2]) # 第二行三列的元素

    b = a[:, 1:3] # 所有行,1:3 意味着第2,3列,更多维的操作与之类似

    print (b)

    注意等号的赋值操作会对原矩阵产生影响,应当注意。

    r3 = np.array([i ** 2 for i in r1])

    # list 里面的comprehension也可以在建造np.array的时候使用

    前面讲过了如何取出来np.array 的整行或者整列,那么如果想要取出来任意的位置的某些元素怎么办?这就要用到 integer array indexing, 姑且叫做整数索引。来看一下:

    然后,更有趣的一种操作,Boolean indexing,布尔索引,设定条件,对于矩阵选择性的选取某些元素。来看一下:

    更多内容可以参考官网:https://docs.scipy.org/doc/numpy/user/basics.creation.html#arrays-creation

    好,下次接着分析numpy的使用练习。

    相关文章

      网友评论

        本文标题:Python 人工智能应用快速入门(三)Numpy(1)

        本文链接:https://www.haomeiwen.com/subject/vdtxfqtx.html