当前位置 主页 > 网站技术 > 代码类 >

    Python Numpy库常见用法入门教程

    栏目:代码类 时间:2020-01-16 12:08

    本文实例讲述了Python Numpy库常见用法。分享给大家供大家参考,具体如下:

    1、简介

    Numpy是一个常用的Python科学技术库,通过它可以快速对数组进行操作,包括形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等。许多Python库和科学计算的软件包都使用Numpy数组作为操作对象,或者将传入的Python数组转化为Numpy数组,因此在Python中操作数据离不开Numpy。

    Numpy的核心是ndarray对象,由Python的n维数组封装而来,但通过C语言预编译相关的数组操作,因此比原生Python具有更高的执行效率,但仍然使用Python语言编码,这样就同时具有简洁的代码和高效的运行速度。ndarry与数组有些区别值得注意,numpy数组中的元素都具有相同的类型,并且在创建时就确定了固定的大小,这与Python数组对象可以动态增长不同。

    2、数组对象

    2.1、属性

    Numpy对象的形式是同构多维数组,数组的维度称为轴(axis),每个维度上元素的个数称为轴的长度。例如下面是一个2×3的二维数组arr,第一轴长度为3,第二轴长度为2

    arr = [[ 1., 0., 0.],
        [ 0., 1., 2.]]

    arr数组对象常用的属性如下:

    # 数组轴的个数
    arr.ndim
    # 数组维度及长度,例如2×3的数组其shape为(2, 3)
    arr.shape
    # 数组元素的总个数
    arr.size
    # 数组中元素的数据类型
    arr.dtype
    # 数组中元素所占字节数
    arr.itemsize

    2.2、创建数组

    可以通过array()方法包裹普通python数组将其转化为numpy数组,通过dtype=规定元素的数据类型。数组可以是二维等高维数组,也可以是元组的形式。

    如果需要填充已知大小的数组可以使用函数zeros(),将元素都填充为0,或者ones()将元素填充为1,empty()将元素填充为随机数

    arange(a,b,c)函数用于从a到b每隔c长度生成一个数组元素。linspace(a,b,c)函数用于在a到b之间生成c个数组元素

    # 普通数组转化为numpy数组
    a1 = np.array([2, 3, 4], dtype=float)
    print(a1)                  
    # 将元组数组转化为二维numpy数组
    a2 = np.array([(1, 2, 3), (3, 4, 5)])
    print(a2)
    # 将3×3的数组用1填充
    a3 = np.ones((3, 3))
    print(a3)
    # 从1到10,每隔2生成一个元素
    a4 = np.arange(1, 10, 2)
    print(a4)
    # 在1到12之间生成4个元素
    a5 = np.linspace(1, 12, 4, dtype=int)
    print(a5)
     
    '''
    普通数组转化为numpy对象:
    [2. 3. 4.]
    元组数组:
    [[1 2 3]
     [3 4 5]]
    用1填充数组:
    [[1. 1. 1.]
     [1. 1. 1.]
     [1. 1. 1.]]
    从1到10每隔2生成一个元素:
    [1 3 5 7 9]
    在1到12之间生成4个元素:
    [ 1 4 8 12]
    '''

    2.3、数组操作

    算术运算符可以直接运用在矩阵上,其结果是将运算应用到每个元素上,例如矩阵A*B就是每个元素对应相乘,矩阵的乘法运算使用的是@符号

    A = np.array([[1, 1],
           [0, 1]])
    B = np.array([[2, 0],
           [3, 4]])
    print(A * B)
    print(A @ B)
     
    '''
    矩阵元素对应相乘:
    [[2 0]
     [0 4]]
    矩阵的乘法:
    [[5 4]
     [3 4]]
    '''

    numpy中有些函数应用于整个数组,例如求和sum、最大值max、最小值min。如果在这些参数中指定了某个轴,则应用于指定轴。

    还有一些函数应用于数组中的具体元素,例如求sin、cos、exp、开方sqrt等,这些函数叫做通函数(ufunc)

    a = np.array([[0, 1, 2, 3],
           [4, 5, 6, 7],
           [8, 9, 10, 11]])
    print(a.max()) # 求整体的最大值,结果为11
    print(a.sum(axis=0)) # 求每一列的和,结果为:[12 15 18 21]
    print(np.sqrt(a))  # 数组每个元素求开方