zoukankan      html  css  js  c++  java
  • python中的Numpy库

    导入numpy库:

    import numpy as np

    python的一个科学计算库的一个基础包,包含了强大的N维数组对象和向量运算

    数组创建,可以使用array函数从常规的python列表和或元组中创建数组,得到的类型是从列表元素中农推导出来的

    使用array函数创建数组,他接受一切序列型的对象,包括其他数组,然后产生一个新的 含有传入数据的numpy数组,其中嵌套数组会被转化为一个多维数组

    把列表转化为数组

    array=np.array([[1,2,3],[4,5,6]])
    print(array,type(array))
    #结果:
    [[1 2 3]
     [4 5 6]] <class 'numpy.ndarray'>
    
    a=np.array([1,2,3,4])
    print(a,type(a))
    #结果:
    [1 2 3 4] <class 'numpy.ndarray'>

    把元组转化为数组

    array1=np.array(((1,2,3),(1,2,3)))
    print(array1,type(array1))
    #结果:
    [[1 2 3]
     [1 2 3]] <class 'numpy.ndarray'>

    创建初始占位内容的数组,zeros()可以创建指定长度或形状的全0数组 ones()可以创建指定长度或形状的全1数组 empty()可以创建一个数组,他的初始内容是随机的,取决于内存的状态

    zeroarray=np.zeros((2,3))
    print(zeroarray)
    #结果:
    [[0. 0. 0.]
     [0. 0. 0.]]
    
    onesarray=np.ones((3,3))
    print(onesarray)
    #结果:
    [[1. 1. 1.]
     [1. 1. 1.]
     [1. 1. 1.]]
    
    emptyarray=np.empty((3,4))
    print(emptyarray)
    #结果:
    [[7.06652000e-096 8.48798317e-314 6.01346930e-154 1.21328784e-311]
     [7.18988866e+140 6.01346953e-154 4.24399158e-313 4.94065646e-324]
     [1.21333862e-311 4.94065646e-324 1.21333862e-311 9.18024560e+062]]

    Numpy提供了一个类似于range的函数,该函数返回数组而不是列表

    array2=np.arange(10,31,5)
    print(array2)
    #结果:
    [10 15 20 25 30]

    输出数组的维度ndim,输出数组的形状shape,输出数组的元素个数size,元素类型dtype

    print(array1)
    #结果:
    [[1 2 3]
     [1 2 3]]

    print(array1.ndim)#输出维度 2
    print(array1.shape)#输出形状 (2, 3)
    print(array1.size)#输出个数 6
    print(array1.dtype)#输出元素类型int32

    重新定义数组的形状

    array3=np.arange(6).reshape([2,3])
    print(array3)
    #结果:
    [[0 1 2]
     [3 4 5]]
    
    array3=np.array([[1,2,3],[4,5,6]],dtype=np.int64).reshape([3,2])
    print(array3)
    #结果:
    [[1 2]
     [3 4]
     [5 6]]

    矩阵的基础运算

    arr1=np.array([[1,2,3],[4,5,6]])
    arr2=np.ones([2,3],dtype=np.int64)
    print(arr1+arr2)
    #结果:
    [[2 3 4]
     [5 6 7]]
    
    print(arr1-arr2)
    #结果:
    [[0 1 2]
     [3 4 5]]
    
    print(arr1*arr2)
    #结果:
    [[1 2 3]
     [4 5 6]]
    
    print(arr1/arr2)
    #结果:
    [[1. 2. 3.]
     [4. 5. 6.]]
    
    print(arr1**2)
    #结果:
    [[ 1  4  9]
     [16 25 36]]

    矩阵的乘法

    arr3=np.array([[1,2,3],[4,5,6]])
    arr4=np.ones([3,2],dtype=np.int64)
    print(arr3)
    print(arr4)
    print(np.dot(arr3,arr4)) #矩阵的乘法
    #结果:
    [[ 6  6]
     [15 15]]

    矩阵的其他计算

    print(arr3)
    #结果:
    [[1 2 3]
     [4 5 6]]
    
    print(np.sum(arr3,axis=1))#axis=1是矩阵每一行求和,=0是每一列求和
    print(np.sum(arr3,axis=0))
    print(np.sum(arr3))
    结果:
    [ 6 15]
    [5 7 9]
    21
    
    print(np.max(arr3))#矩阵中的最大值,axis=1是每一行的最大值,=0是每一列的最大值
    print(np.min(arr3))
    #结果:
    6
    1
    
    print(np.mean(arr3))#矩阵中所有元素的均值,axis=1是每一行的均值,=0是每一列的均值
    #结果:
    3.5
    
    print(np.argmax(arr3))#如果没有参数,就是最大值的索引
    print(np.argmax(arr3,axis=1))#如果加上参数axis=1是a[0][0],a[1][0]和a[0][1],a[1][1]分别进行对比,初始是(0,0)大一次,就在对应的那行加1,比到最后,就是最后的结果了
    print(np.argmax(arr3,axis=0))#如果加上参数axis=0是a[0][0],a[0][1]和a[1][0],a[1][1]分别进行对比,初始是(0,0)大一次,就在对应的那行加1,比到最后,就是最后的结果了
    #结果:
    5
    [2 2]
    [1 1 1]
    
    print(np.argmin(arr3))
    #结果:
    0

    矩阵的转置

    zhuanzhi=np.transpose(arr3)
    print(zhuanzhi)
    #结果:
    [[1 4]
     [2 5]
     [3 6]]
    
    #把矩阵或数组降到一维
    print(arr3.flatten())#默认是按横向进行降的
    print(arr3.flatten('F'))#F参数表示是按竖向进行降的
    #结果:
    [1 2 3 4 5 6]
    [1 4 2 5 3 6]

    数组的索引和切片

    arr5=np.arange(0,6).reshape([2,3])
    print(arr5)
    print(arr5[1])#索引为1的那行[3,4,5]
    print(arr5[1][2])#索引为1行2列的那个值 5
    print(arr5[1,2])#索引为1行2列的值 5
    
    print(arr5[1,:])#行索引为1的那行,[3,4,5]
    print(arr5[:,1])#列索引为1的那列,[1,4]
    print(arr5[1,0:2])#行索引为1中的列索引为0,1的切片,遵循左闭右开的原则[3,4]
    #结果:
    [[0 1 2]
     [3 4 5]]
    [3 4 5]
    5
    5
    [3 4 5]
    [1 4]
    [3 4]
  • 相关阅读:
    挂载在snap的/dev/loop占用100%问题
    机器学习3- 一元线性回归+Python实现
    机器学习-2 模拟评估与选择
    机器学习-1 绪论
    Java面试系列第4篇-HashMap相关面试题
    Java面试系列第3篇-类的加载及Java对象的创建
    Java面试系列第2篇-Object类中的方法
    Java面试系列第1篇-基本类型与引用类型
    第3篇-如何编写一个面试时能拿的出手的开源项目?
    第2篇-如何编写一个面试时能拿的出手的开源项目?
  • 原文地址:https://www.cnblogs.com/x00479/p/14249717.html
Copyright © 2011-2022 走看看