zoukankan      html  css  js  c++  java
  • numpy模块

    numpy模块:
    
    --对numpy数值---矩阵进行科学运算
    --数据分析
    --tensorflow/pytorch ---张量进行科学运算
    kaggle / 天池 /acm
    import numpy as np
    gpu -->图形显卡0---图形存储
    
    --->numpy数组--可变
    #---一维
    arrl = np.array([1,2,4,6])  #[可迭代]
    #二维
    arr = np.array([[1,2,4],[7,8,9]])
    #三维 ---》tensorflow
    
    #属性:
    T  行位互换
    dtype  #数组元素的数据类型,numpy数组属于python
    ndim 维数
    shape 维度大小(元组)
    astype 类型转换
    
    切割数组:
    print(arr[:,:]) #行,列--从零开始,不要最后的
    --》有步长
    赋值:
    print(arr[:,:] = 0)
    --》逻辑取值
    
    --数组合并:
    np.hstack((arr1,arr2))  水平
    np.vstack((arr1,arr2))   垂
    np.concatenate(((arr1,arr2),axis=0/1))
    
    

    numpy模块:

    --是python中一种开源的数值计算扩展库。可以用来存储和处理大型numpy数组。

    用途:
    1.区别于list1列表。提供了数组操作,数组运算,及统计分布和简单的数学模型

    2.计算速度快,甚至要优于python内置的简单运算, 使得其成为pandas、sklearn等模块的依赖包。 高级的框架如TensorFlow、PyTorch等,其数组操作也和numpy非常相似。

    为什么用numpy?

    list1 =[1,2,3]
    list2 = [4,5,6]
    --list1 * list2
    lis_res = []
    for i in range(len(list1)):
        lis_res.append(list1[i]*list2[i])
    ---时间复杂度: for 循环--》o(n)
        
    

    创建numpy数组:
    ---numpy数组即numpy的ndaray对象,创建numpy数组就是把一个列表传入np.array()方法

    import numpy as np
    
    #创建一维数组:
    arr = np.array([1,2,3])# []为可变数据类型
    print(arr,type(arr))
    
    #创建二维数组
    arr1 = np.array([[1,2,3],[4,5,6]])
    
    #创建三维数组
    arr2 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
    
    

    numpy数组的常用属性:

    T     数组的转置(行位互换)--》高维
    dtype 数组元素的数据类型
    size  数组元素的个数
    ndim  数组的维数
    shape 数组的维度大小(以元组形式)
    astype 类型转换
    
    dtype 种类: bool_,int(8,16,32,64),
                float(16,32,64)
    
    arr = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.float32)
    print(arr)
    
    [[1. 2. 3.]
     [4. 5. 6.]]
    print(arr.T)
    
    [[1. 4.]
     [2. 5.]
     [3. 6.]]
    print(arr.shape)
    (2, 3)  #二行,三列
    
    

    numpy数组的行列数:

    print(arr.shape[0])
    -->行
    print(arr.shape[1])
    -->列
    

    切割数组:

    --numpy数组的切割涉及到行和列的切割,但是两者切割的方式都是从索引0开始,并且取头不取尾。

    arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
    
    #取所有元素
    print(arr[:,:])
    #取第一行所有元素
    print(arr[:1,:])
    print(arr[0, [0, 1, 2, 3]])
    #取第一列所有元素
    print(arr[:,:1])
    
    
    #---逻辑取值,返回一个数组,
    print(arr[arr>5])
    --[ 6  7  8  9 10 11 12]
    
    numpy数组按运算符取元素的原理,即通过arr > 5生成一个布尔numpy数组
    print(arr > 5)
    
    

    numpy数组元素替换:

    --numpy数组也是一个可变类型的数据,即如果对numpy数组进行替换操作,会修改原numpy数组的元素

    arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
    print(arr)
    
    arr1 = arr.copy()
    arr1[:1,:] = 0
    print(arrl)
    [[ 0  0  0  0]
     [ 5  6  7  8]
     [ 9 10 11 12]]
    
    arr2 = arr.copy()
    arr[arr>5] = 0
    print(arr2)
    
    arr3[:,:] = 0
    	
    

    numpy数组的合并:

    arr1 = np.array([[1, 2], [3, 4], [5, 6]])
    
    arr2 = np.array([[7, 8], [9, 10], [11, 12]])
    # 合并两个numpy数组的行,注意使用hstack()方法合并numpy数组,numpy数组应该有相同的行,其中hstack的h表示horizontal水平的
    print(np.hstack(arr1,arr2))
    [[ 1  2  7  8]
     [ 3  4  9 10]
     [ 5  6 11 12]]
    
    # 合并两个numpy数组,其中axis=1表示合并两个numpy数组的行
    print(np.concatenate((arr1, arr2), axis=1))
    
    # 合并两个numpy数组的列,注意使用vstack()方法合并numpy数组,numpy数组应该有相同的列,其中vstack的v表示vertical垂直的
    print(np.vstack((arr1, arr2)))
    [[ 1  2]
     [ 3  4]
     [ 5  6]
     [ 7  8]
     [ 9 10]
     [11 12]]
    # 合并两个numpy数组,其中axis=0表示合并两个numpy数组的列
    print(np.concatenate((arr1, arr2), axis=0))
    
    
    

    通过函数创建numpy数组:

    array()    将列表转化为数组,可选择显示指定dtype
    areange()   range的numpy版,支持浮点数
    linspace()  类似arange(),第三参数为数组长度
    zero()/ones() 根据指定形状和dtype创建全0 / 1数组  
    eye()      创建单位矩阵
    empty()    创建一个元素全随机数
    reshape()  重塑形状
    
    arr = np.array([1,2,3])
    print(arr)
    
    print(np.arange(10))
    -[0 1 2 3 4 5 6 7 8 9]
    print(np.arange(1,10,2))
    
    --linspace / logspace
    #构造一个等差数列,
    print(np.linspace(0,20,5))
    --[ 0.  5. 10. 15. 20.]
    # 构造一个等比数列,从10**0取到10**20,取5个数
    print(np.logspace(0,20,5))
    --[1.e+00 1.e+05 1.e+10 1.e+15 1.e+20]
    
    zeros / ones / eye / empty
    print(n.zero(3,4))
    [[0. 0. 0. 0.]
     [0. 0. 0. 0.]
     [0. 0. 0. 0.]]
    
    print(np,eye(3))
    [[1. 0. 0.]
     [0. 1. 0.]
     [0. 0. 1.]]
    
     构造一个4*4的随机numpy数组,里面的元素是随机生成的
    print(np.empty((4, 4)))
    [[ 2.31584178e+077 -1.49457545e-154  3.95252517e-323  0.00000000e+000]
     [ 0.00000000e+000  0.00000000e+000  0.00000000e+000  0.00000000e+000]
     [ 0.00000000e+000  0.00000000e+000  0.00000000e+000  0.00000000e+000]
     [ 0.00000000e+000  0.00000000e+000  1.29074055e-231  1.11687366e-308]]
    
    #reshape--重塑形状
    arr = np.ones([2,2],dtype=int)
    print(arr.reshape(4,1))
    [[1]
     [1]
     [1]
     [1]]
    

    numpy数组运算:

    +	两个numpy数组对应元素相加
    -	两个numpy数组对应元素相减
    *	两个numpy数组对应元素相乘
    /	两个numpy数组对应元素相除,如果都是整数则取商
    %	两个numpy数组对应元素相除后取余数
    **n	单个numpy数组每个元素都取n次方,如**2:每个元素都取平方
    
    arr1 = np.array([[1, 2], [3, 4], [5, 6]])
    arr2 = np.array([[7, 8], [9, 10], [11, 12]])
    
    print(ar11+arr2)
    print(arr1**2)
    [[ 8 10]
     [12 14]
     [16 18]]
    

    numpy数组的转置

    ---numpy数组的行和列互换

    arr = np.array([[1, 2, 3], [4, 5, 6]])
    
    print(arr.transpose) /print(arr.T)
    [1 4]
     [2 5]
     [3 6]]
    

    numpy数组的逆:

    --numpy数组行和列相同时,numpy数组才可逆

    arr = np.array([[1, 2, 3], [4, 5, 6], [9, 8, 9]])
    
    print(np.linalg.inv(arr))
    

    Numpy数组科学和统计方法:

    sum	求和
    cumsum	累加求和
    mean	求平均数
    std	求标准差
    var	求方差
    min	求最小值
    max	求最大值
    argmin	求最小值索引
    argmax	求最大值索引
    sort	排序
    
    arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
    
    print(arr.max())
    # 获取举着每一行的最大值
    print(arr.max(axis=0))
    # 获取numpy数组最大元素的索引位置
    print(arr.argmax(axis=1))
    # 获取numpy数组每一列的平均值
    print(arr.mean(axis=0))
    # 获取numpy数组每一列的元素的方差
    print(arr.var(axis=0))
    # 对numpy数组的每一列求和
    print(arr.sum(axis=0))
    # 第n个元素为前n-1个元素累加和
    print(arr.cumsum())
    

    numpy.random生成随机数:

    rand(d0,d1,⋯,dn)	产生均匀分布的随机数	dn为第n维数据的维度
    randn(d0,d1,⋯,dn)	产生标准正态分布随机数	dn为第n维数据的维度
    randint(low[, high, size, dtype])	产生随机整数	low:最小值;high:最大值;size:数据个数
    random_sample([size])	在[0,1)内产生随机数	size为随机数的shape,可以为元祖或者列表
    choice(a[, size])	从arr中随机选择指定数据	arr为1维数组;size为数组形状
    uniform(low,high [,size])	给定形状产生随机数组	low为最小值;high为最大值,size为数组形状
    shuffle(a)	与random.shuffle相同	a为指定数组
    
  • 相关阅读:
    Linux中/etc目录下passwd和shadow文件
    Linux基本命令
    Linux目录结构说明与基本操作
    如何用虚拟机VMware Workstation安装CentOs-7
    VPP源码分析及流程图
    VPP环境搭建及配置
    【转】智能指针的交叉引用问题及解决方法
    二叉树的前 中 后 层序遍历
    排序算法
    C和C++的一些区别
  • 原文地址:https://www.cnblogs.com/shaozheng/p/11608269.html
Copyright © 2011-2022 走看看