机器学习:Python实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

4.2 NumPy速成

NumPy为SciPy提供了基本的数据结构和运算,其中最主要的是ndarrays多维数组,它提供了高效的矢量运算功能。

4.2.1 创建数组

利用NumPy创建多维数组非常简单,通过给array函数传递Python的序列对象创建数组,如果传递的是多层嵌套的序列,将创建多维数组。代码如下:

    import numpy as np
    # 创建数组
    myarray=np.array([1, 2, 3])
    print(myarray)
    print(myarray.shape)
    #创建多维数组
    myarray=np.array([[1, 2, 3], [2, 3, 4], [3, 4, 5]])
    print(myarray)
    print(myarray.shape)

执行结果如下:

    [1 2 3]
   (3,)
    [[1 2 3]
    [2 3 4]
    [3 4 5]]
   (3, 3)

4.2.2 访问数据

对于ndarray数组的访问,我们可以通过数组的下标访问某一行,也可以访问某一列。代码如下:

    import numpy as np
    # 创建多维数组
    myarray=np.array([[1, 2, 3], [2, 3, 4], [3, 4, 5]])
    print(myarray)
    print(myarray.shape)
    # 访问数据
    print('这是第一行:%s' % myarray[0])
    print('这是最后一行:%s' % myarray[-1])
    print('访问整列(3列)数据:%s' % myarray[:, 2])
    print('访问指定行(2行)和列(3列)的数据:%s' % myarray[1, 2])

执行结果如下:

    [[1 2 3]
    [2 3 4]
    [3 4 5]]
   (3, 3)
    这是第一行:[1 2 3]
    这是最后一行:[3 4 5]
    访问整列(3列)数据:[3 4 5]
    访问指定行(2行)和列(3列)的数据:4

4.2.3 算数运算

使用NumPy的ndarray数组可以直接进行算术运算,或者说向量运算。代码如下:

    import numpy as np
    # 创建多维数组
    myarray1=np.array([[1, 2, 3], [2, 3, 4], [3, 4, 5]])
    myarray2=np.array([[11, 21, 31], [21, 31, 41], [31, 41, 51]])
    print('向量加法运算:')
    print(myarray1+myarray2)
    print('向量乘法运算:')
    print(myarray1 * myarray2)

执行结果如下:

    向量加法运算:
    [[12 23 34]
    [23 34 45]
    [34 45 56]]
    向量乘法运算:
    [[ 11  42  93]
    [ 42  93 164]
    [ 93 164 255]]

NumPy主要用来处理大量数字的应用,通过这三个例子,熟悉了NumPy的多维数组的定义、访问和向量运算。