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

    Numpy是一个第三方库,是数组相关的运算

    通过pip安装;pip install numpy

    Anaconda python的一个科学计算发行版本,安装后将不必单独安装numpy,下面的库模块也将不必安装Scipu,numpy,pandas,matplotlib,scikit-learn

    实例演示

    import numpy as np
    
    #用列表创建数组
    arr = np.array([1,2,3,4])#用普通列表创建数组
    arr_2d = np.array([[1,2],[3,4]]) #嵌套列表创建多维数组
    
    arr.ndim  #1,数组维度
    arr_2d.ndim #2  ,数组维度
    
    arr.shape  #(4,) 数组形状
    arr_2d.shape  #(2,2) 数组形状
    
    arr.dtype  #dtype('int32'),数组类元素类型
    

    #数组函数生成数组
    arr2 = np.arange(10)  #[0,10)区间函数
    print(arr2)
    arr3 = np.linspace(0,4,10)  # 0到4之间等分10份
    print(arr3)
    arr4 = np.random.randn(6,4)  #正态分布的随机数
    print(arr4)
    arr5 = np.random.randint(1,5,(3,4))#1-5随机选整数,形成3*4的数组
    print(arr5)

    结果:

    [0 1 2 3 4 5 6 7 8 9]
    [0.         0.44444444 0.88888889 1.33333333 1.77777778 2.22222222
     2.66666667 3.11111111 3.55555556 4.        ]
    [[ 0.66212053 -0.09177667  0.1540246  -0.60972427]
     [-0.29582584 -1.78060509  0.85346138  0.98237782]
     [ 0.81189452  1.05013452 -1.30248473  1.68647191]
     [-0.51096937  0.55555892  1.04796969 -0.68796894]
     [ 1.90261247  0.66688596 -0.83434671 -1.96265811]
     [-0.55722723 -0.49191761  0.53691393  0.32902115]]
    [[2 2 4 4]
     [4 3 1 3]
     [2 2 4 2]]
    #特殊方法数组
    zero = np.zeros((3,5))  #数组元素为0的3*5数组
    print(zero.dtype,zero)
    
    one = np.ones((3,5),dtype="int32")  #数组元素为1的3*5数组,dtype指定数组内元素的数据类型
    print(one.dtype,one)
    
    eye_arr = np.eye(6)  #对角线为1的数组
    print(eye_arr)

    结果:

    float64 [[0. 0. 0. 0. 0.]
     [0. 0. 0. 0. 0.]
     [0. 0. 0. 0. 0.]]
    int32 [[1 1 1 1 1]
     [1 1 1 1 1]
     [1 1 1 1 1]]
    [[1. 0. 0. 0. 0. 0.]
     [0. 1. 0. 0. 0. 0.]
     [0. 0. 1. 0. 0. 0.]
     [0. 0. 0. 1. 0. 0.]
     [0. 0. 0. 0. 1. 0.]
     [0. 0. 0. 0. 0. 1.]]
    #数组的 索引和切片
    arr5 = np.array([[4, 2, 2, 2],[3, 2, 2, 4],[3, 2, 1, 4]])
    arr5[0]  #array([4, 2, 2, 2])
    arr5[0,0]  #4
    arr5[-1]  # array([3, 2, 1, 4])
    arr5[-1,-1] #4
    arr5[:2,1]  #array([2,2])切片,逗号前表示行切片,逗号后表示列切片
    

    #改变数组形状
    arr6 = arr5.reshape(4,3)#生成新的数组,要求元素必须相等
    print(arr6)
    arr7 = arr5.reshape(2,6)
    print(arr7)
    arr8 = arr7.ravel() #变成1维数组
    print(arr8)
    
    #矩阵转置
    arr11 = arr7.transpose()  #行列互换
    print(arr11)
    
    #矩阵广播:至少有个维度是相同的(标量是个特殊情况)
    one = one*10
    print(one)
    

    结果:

    [[4 2 2]
     [2 3 2]
     [2 4 3]
     [2 1 4]]
    [[4 2 2 2 3 2]
     [2 4 3 2 1 4]]
    [4 2 2 2 3 2 2 4 3 2 1 4]
    [[4 2]
     [2 4]
     [2 3]
     [2 2]
     [3 1]
     [2 4]]
    [[10. 10. 10. 10. 10.]
     [10. 10. 10. 10. 10.]
     [10. 10. 10. 10. 10.]]

    #常用运算
    arr9 = np.ones((2,6))
    print(arr9)
    arr79 = arr7+arr9
    print(arr79)
    arr7_9 = arr7-arr9
    print(arr7_9)
    arr10 = arr7*arr9
    print(arr10)
    #np.dot() #点乘
    

    结果:

    [[1. 1. 1. 1. 1. 1.]
     [1. 1. 1. 1. 1. 1.]]
    [[5. 3. 3. 3. 4. 3.]
     [3. 5. 4. 3. 2. 5.]]
    [[3. 1. 1. 1. 2. 1.]
     [1. 3. 2. 1. 0. 3.]]
    [[4. 2. 2. 2. 3. 2.]
     [2. 4. 3. 2. 1. 4.]]

    print(np.sin(arr10)) #arr10的每个元素求正选
    print(np.sqrt(arr10)) #arr10的每个元素求平分根

    结果:

    [[-0.7568025   0.90929743  0.90929743  0.90929743  0.14112001  0.90929743]
     [ 0.90929743 -0.7568025   0.14112001  0.90929743  0.84147098 -0.7568025 ]]
    [[2.         1.41421356 1.41421356 1.41421356 1.73205081 1.41421356]
     [1.41421356 2.         1.73205081 1.41421356 1.         2.        ]]
    #数组最大最小
    arr10.max()  #求最大值
    arr10.argmax()  #最大值所在索引
    arr10.min()  #求最小值
    arr10.argmin()  #最小值所在索引
    arr10.sum()  #求和
    
  • 相关阅读:
    DS博客作业02—线性表
    DS博客作业01--日期抽象数据类型
    c语言第六次作业---结构体&文件
    c语言博客05--指针
    c语言博客作业04--数组
    DS博客作业08-课程总结
    DS博客作业07--查找
    DS博客作业06--图
    DS博客作业-05--树
    DS-博客作业03--栈和队列
  • 原文地址:https://www.cnblogs.com/pinpin/p/10473720.html
Copyright © 2011-2022 走看看