当前位置 博文首页 > Python基础之Numpy的基本用法详解

    Python基础之Numpy的基本用法详解

    作者:孤旅青山迷情人 时间:2021-06-10 18:32

    一、数据生成

    1.1 手写数组

    a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) # 一维数组
    b = np.array([[1, 2], [3, 4]]) #二维数组

    1.2 序列数组

    numpy.arange(start, stop, step, dtype),start默认0,step默认1

    c = np.arange(0, 10, 1, dtype=int)  # =np.arange(10)  [0 1 2 3 4 5 6 7 8 9]
    d = np.array([np.arange(1, 3), np.arange(4, 6)])  # 二维数组
    # 不过为了避免麻烦,通常序列二维数组都是通过reshape进行重新组织
    dd = c.reshape(2, 5)  # 将一维数组重新组合成2行5列
    

    1.3 随机数组

    numpy.random.random(size=None) 该方法返回[0.0, 1.0)范围的随机小数。
    numpy.random.randint() 该方法返回[low, high)范围的随机整数。
    该方法有三个参数low、high、size 三个参数。默认high是None,如果只有low,那范围就是[0,low)。如果有high,范围就是[low,high)
    numpy.random.randn(d0,d1,…,dn) 该方法返回一个或一组样本,具有正态分布
    np.random.normal 指定期望和方差的正太分布

    e = np.random.random(size=2)  # 一维数组,元素两个,[0.0,1.0]的随机数
    f = np.random.random(size=(2, 3))  # 两行三列数组,[0.0,1.0]的随机数
    
    h = np.random.randint(10, size=3)  # [0,10]范围内的一行三列随机整数
    i = np.random.randint(5, 10, size=(2, 3))  # [5,10]范围内的2行3列随机整数
    

    1.4 其他方式数组

    numpy.zeros 创建指定大小的数组,数组元素以0 来填充
    numpy.ones 创建指定形状的数组,数组元素以1 来填充
    numpy.empty 创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组,里面的元素的值是之前内存的值
    np.linspace 创建一个一维数组,数组是一个等差数列构成的
    numpy.logspace 创建一个于等比数

    j = np.zeros((2, 5))
    k = np.ones((2, 5))
    l = np.linspace(1, 20, 10)

    二、数组属性查看

    ndarray.ndim
    darray.shape 数组的维度和列,对于矩阵,n 行m 列
    ndarray.size 数组元素的总个数,相当于.shape 中n*m 的值
    ndarray.dtype ndarray 对象的元素类型
    ndarray.itemsize ndarray 对象中每个元素的大小,以字节为单位
    ndarray.flags ndarray 对象的内存信息
    ndarray.real ndarray 元素的实部
    ndarray.imag ndarray 元素的虚部
    ndarray.data 包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。

    print('ndim:数组的秩(维度)'.center(20, '*'))
    print('ndim:', i.shape[1])

    三、数组索引

    x = np.arange(1, 13) # 一维数组
    a = x.reshape(4, 3) # 二维数组
    print(‘x:', x)
    print(‘a:', a)

    3.1 一维数组的索引

    print(x[2:])
    print(x[3:8])

    3.2 二维数组的索引

    print(a[0])  # 第一行
    print(a[2, 2])  # 第三行第4列
    print(a[:, 2])
    print(a[::2, 0])  # 所有奇数行第1列数据
    print(a[(2, 1), (1, 2)])  # 第3行第2列,第2行第3列   = np.array((a[2,1],a[1,2]))取出来后在重新生成新的数组
    print(a[-2])  # 获取倒数第二行
    print(a[::-1])  # 行倒序
    print(a[::-1, ::-1])  # 行列倒序
    

    四、数组的方法

    4.1 改变数组维度

    reshape将一维数组变成二维或者三维
    ravel将三维数组变成一维数组,flatten将二维数组变成一维数组

    4.2 数组拼接

    使用numpy.hstack(a1,a2) 函数将两个数组水平组合
    numpy.vstack(a1,a2) 函数可以将两个或多个数组垂直组合起来形成一个数组
    使用numpy.concatenate((a1, a2, …), axis),控制axis参数的值也可以实现hstack和vstack的功能,axis=0等同于vstack、axis=1等同于hstack

    4.3 数组分隔

    b = np.split(x, 4)  # 将一个一维数组四等分, 用b[1]的方式获取每个块的数据
    # print(b[1])
    c = np.split(a, 2, axis=0)  # 二维数组的垂直分隔,按行分隔成两部分
    # print(c[0])
    d = np.split(a, [2], axis=1)  # 二维数组的水平分隔,按列分隔成两部分
    # print(d[0])
    

    4.4 算术运算

    加减乘除: add(),subtract(),multiply() 和divide()
    np.sum() 求和
    np.prod() 所有元素相乘
    np.mean() 平均值
    np.std() 标准差
    np.var() 方差
    np.median() 中数
    np.power() 幂运算
    np.sqrt() 开方
    np.min() 最小值
    np.max() 最大值
    np.argmin() 最小值的下标
    np.argmax() 最大值的下标
    np.inf 无穷大
    np.exp(10) 以e 为底的指数
    np.log(10) 对数

    js
    下一篇:没有了