您现在的位置是:群英 > 开发技术 > Python语言
python中numpy是什么库,怎样使用?
Admin发表于 2021-11-22 17:53:531317 次浏览

    这篇文章给大家分享的是python中numpy的相关内容,那么究竟python中numpy是什么库,有什么用及怎样使用呢?文中介绍的非常详细,感兴趣的朋友接下来一起跟随小编学习一下吧。

    一、numpy是什么?

        扩展库numpy是Python支持科学计算的重要扩展库,是数据分析和科学计算领域如scipy、pandas、sklearn 等众多扩展库中的必备扩展库之一,提供了强大的N维数组及其相关运算、复杂的广播函数、C/C++和Fortran代码集成工具以及线性代数、傅里叶变换和随机数生成等功能。本章童点介绍数组与矩阵及其相关运算,为学习和理解后面章节中的数据分析、机器学习打下良好的基础。

        简单来说就是你用来为人工智能领域打基础的东西,私话说得好,基础不牢,地动山摇嘛~所以这个地方可要好好学习哦~~

    二、numpy数组

        在numpy中使用的不是python自带的数据类型list,而是numpy中的ndarray。那为什么使用ndarray而不是使用list呢?

        因为ndarray是由c/c++写出来的,占用内存更小,使用速度更快,创建一个ndarray的方法有很多,这里说下使用array方法转化的

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Author: Smly
    # @datetime: 2021/9/26 22:22 
    # @Version: 1.0
    
    import numpy as np
    
    li = [1, 2, 3]
    tp = (1, 2, 3)
    
    nday1 = np.array(li)
    nday2 = np.array(tp)
    
    print("*****类型*****")
    print(type(nday1))
    print(type(nday2))
    
    print("*****数组*****")
    print(nday1)
    print(nday2)
    

        输出结果:

    *****类型*****
    <class 'numpy.ndarray'>
    <class 'numpy.ndarray'>
    *****数组*****
    [1 2 3]
    [1 2 3]
    

    2.1 数组使用

        如果元素相同的话,可以进行加减乘除

        在元素个数相同的情况下,可以进行数组间的加减

        在元素个数相同的情况下,可以进行数组间的乘除

        对某个数进行的乘除,可以自动进行到所有元素

        看例子理解:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Author: Smly
    # @datetime: 2021/9/26 22:22 
    # @Version: 1.0
    import numpy as np	
    li = [1, 2, 3]	# 列表
    tp = (1, 2, 3)	# 元组
    nday1 = np.array(li)	# 内置方法将列表转为ndarray
    nday2 = np.array(tp)	# 内置方法将元组转为ndarray
    nday3 = np.array(range(5)) # 使用range内置函数方法生成ndarray连续数组
    nday4 = np.array(range(5, 10))  # 使用range内置函数方法生成ndarray连续数组
    print("*****类型*****")
    print(type(nday1))
    print(type(nday2))
    print(type(nday3))
    print(type(nday4))
    print("*****数组*****")
    print(nday1)
    print(nday2)
    print(nday3)
    print(nday4)
    print("*****数组加减*****")
    print(nday2 + nday1)
    print(nday2 - nday1)
    print(nday4 - nday3)
    print(nday3 + nday4)
    # 在元素个数相同的情况下,可以进行数组间的加减
    print("*****数组乘除*****")
    print(nday2 * nday1)
    print(nday2 // nday1)
    print(nday4 * nday3)
    print(nday4 // nday3)
    # 在元素个数相同的情况下,可以进行数组间的乘除
    print(nday1 * 3)
    print(nday2 // 2)
    print(nday3 * 2)
    print(nday4 // 2)
    # 对某个数进行的乘除,可以自动进行到所有元素
    
    
    

        运行结果:

    *****类型*****
    <class 'numpy.ndarray'>
    <class 'numpy.ndarray'>
    <class 'numpy.ndarray'>
    <class 'numpy.ndarray'>
    *****数组*****
    [1 2 3]
    [1 2 3]
    [0 1 2 3 4]
    [5 6 7 8 9]
    *****数组加减*****
    [2 4 6]
    [0 0 0]
    [5 5 5 5 5]
    [ 5  7  9 11 13]
    *****数组乘除*****
    [1 4 9]
    [1 1 1]
    [ 0  6 14 24 36]
    [0 0 0 0 0]
    [3 6 9]
    [0 1 1]
    [0 2 4 6 8]
    [2 3 3 4 4]
    
    

    2.2 创建数组

        刚刚的array()方法是将列表和元组等迭代对象转为ndarray数组

        接下来要说的是自动创建数组

        1. 使用empty创建空数组

        里面会有初始值,但是数组初始为None

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Author: Smly
    # @datetime: 2021/9/28 12:29 
    # @Version: 1.0
    import numpy as np
    em1 = np.empty(5)       # 创建一个长度为5的空数组
    em2 = np.empty((2, 2))  # 创建一个2*2的空二维数组
    
    print("一维数组,长度为5", em1)
    print("二维数组,长度为2*2", em2)
    
    

        输出结果:

    [9.96754604e-312 9.96754614e-312 2.60799828e-310 9.34609789e-307
     0.00000000e+000]
    [[6.95299778e-310 9.96747617e-312]
     [0.00000000e+000 6.95299776e-310]]
    

    2. 使用arange函数创建

        arange是numpy自带的的一个方法,作用与range这个Python内置函数相差无几,都是生成数组

        先导入numpy包

    import numpy as np
    

        然后创建数组

    print("*****ararge创建数组*****")
    
    aran_arr1 = np.arange(5)
    aran_arr2 = np.arange(5, 10)
    
    print("*****类型*****")
    print(type(aran_arr1))
    print(type(aran_arr2))
    
    print("*****数组*****")
    print(aran_arr1)
    print(aran_arr2)
    
    

    3. 使用zeros函数生成数组

        zeros函数是numpy自带的方法,作用是生成指定数量的全0一维数组,全0二维数组等

        看下面的例子:

        生成一个具有三个元素的一维数组和一个具有五个元素的一维数组:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Author: Smly
    # @datetime: 2021/9/27 21:31 
    # @Version: 1.0
    
    import numpy as np
    zero_arr = np.zeros(3)
    zrro_arr2 = np.zeros(5)
    print(zero_arr)
    print(zrro_arr2)
    

        运行结果:

    [0. 0. 0.]
    [0. 0. 0. 0. 0.]

        当然这只是一位数组,你还可以生成二维数组,也就是矩阵

        使用如下代码可以生成一个三行三列的矩阵

    zero_arr3 = np.zeros((3, 3))
    

        输出看看:

    print(zero-arr3)
    

        运行结果:

    [[0. 0. 0.]
     [0. 0. 0.]
     [0. 0. 0.]]

    4. ones函数生成数组

        使用ones函数生成全1函数,方法同zeros

    import numpy as np
    
    ones_arr1 = np.ones(3)
    

        输出结果:

    [1. 1. 1.]

        生成一个三行三列的矩阵

    import numpy as np
    
    ones_arr2 = np.ones((3, 3))
    

        输出结果:

    [[1. 1. 1.]
     [1. 1. 1.]
     [1. 1. 1.]]

    5. diag函数生成对角矩阵

        什么是对角矩阵?你应该听说过对角线,矩阵就是生成在对角线上的矩阵

        函数参数是一个元祖

        看代码和运行结果能够理解的更深刻

    import numpy as np
    
    diag_arr = np.diag((4, 3, 2, 1))
    

        将diag_arr的输出的结果为:

    [[4 0 0 0]
     [0 3 0 0]
     [0 0 2 0]
     [0 0 0 1]]

        看,对角线是不是你函数的参数,这下理解了吧

    6. N维数组

        N维数组就是多维数组,可以理解为数组里面还是数组,里面还是数组,可以参照这个形式

    [[[1 2]
      [3 4]]
     [[5 6]
      [7 8]]]

        这个概念确实有点抽象,有点难理解。这就是一个三维数组,是通过三维列表使用array方法转换成ndarray的

        代码:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Author: Smly
    # @datetime: 2021/9/27 13:29 
    # @Version: 1.0
    import numpy as np
    
    li = [
        [[1, 2], [3, 4]],
        [[5, 6], [7, 8]]
    ]
    te1 = np.array(li)
    print(te1)
    
    

        当然,二维数组也算是N维数组

    2.3 访问数组元素

        numpy自带了一个insert函数,可以往数组中插入元素

        看实例:

    li = [[1, 2, 3, 4], [5, 6, 7, 8], [2, 4, 6, 8]]
    gb1 = np.array(li)
    np.insert(gb1, 1, [1, 2, 3, 4])
    

        输出结果:

    [1 1 2 3 4 2 3 4 5 6 7 8 2 4 6 8]

        还有一个自带的add函数,可以进行数组的相加减

        数组嘛,可以使用下标来获取数组元素

    import numpy as np
    
    li1 = [1, 2, 3, 4]
    gb2 = np.array(li1)
    print(gb2[1])
    

        输出结果为:

    2

        当然,它是一个数组,你理所应当的也可以使用循环语句来遍历数组

    三、了解矩阵

        数组是数组,矩阵是矩阵。

        数组是一种数据结构,可以存储多种数据,可以有多维

        矩阵是数学中的一个概念,只能存放数字,并且只能是二维的形式

        生成矩阵的方法就和生成N维数组的方法是一样的

        先使用列表创建二维列表,然后再使用numpy的方法转成矩阵,当然也有好几中生成矩阵的方法

    import numpy as np
    li = [[1, 2, 3, 4], [5, 6, 7, 8]]
    j1 = np.matrix(li)
    print(j1)
    print(type(j1))
    print(j1.dtype)
    

        输出该矩阵:

    输出矩阵: [[1 2 3 4]
     [5 6 7 8]]
    矩阵在Python的类型: <class 'numpy.matrix'>
    在numpy中的类型: int32
    

        矩阵可以进行各种数学运算,在numpy中都得到了很好的支持,这里就不细说了

    3.1 广播

        何为广播,广播就是能将你的东西发送到各个区域,一般在计算机中是将信息发送到局域网络中的每个计算机中。

        而在numpy中也有广播,只不过他是将元素自动补到数组,矩阵上,就像你在上面看到的,一个数组乘除一个元素,数组中的所有元素都会乘这个数

    import numpy as np
    
    li1 = [1, 2, 3, 4]
    print(np.array(li1)*10)
    

        输出结果:

    [10 20 30 40]

        这个就是广播,就是将数字10播到li转成的数组中,能够让数组所有元素都乘10。

        而不同维度的数组也可以这样

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Author: Smly
    # @datetime: 2021/9/27 13:40 
    # @Version: 1.0
    import numpy as np
    li = [[1, 2, 3, 4], [5, 6, 7, 8], [2, 4, 6, 8]]
    gb1 = np.array(li)
    li1 = [1, 2, 3, 4]
    gb2 = np.array(li1)
    print(gb1*gb2)
    
    

        将一维数组的每个元素挨个广播到二维数组,前提是:

        二维数组中的一维数组的个数与一维数组的个数是相同的

        运行结果:

    [[ 1  4  9 16]
     [ 5 12 21 32]
     [ 2  8 18 32]]

        现在大家对于python中numpy是什么库应该都清楚了吧,本文对大家学习 numpy库的使用有一定的帮助,有需要的朋友可以参考学习。想要了解更多Python的内容,大家可以关注群英网络其它相关文章。

    文本转载自脚本之家

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

    相关信息推荐
    2022-05-10 16:01:28 
    摘要:本篇文章给大家带来了关于Python的相关知识,其中主要总结了24个非常实用的Python开发技巧,包括了all or any、bashplotlib、collections等等,希望对大家有帮助。
    2022-01-13 18:56:23 
    摘要:这篇文章我们来了解Python怎样判断回文数,Python实现回文数判断的方法有很多,下文示例是使用指针的方法,给大家介绍了实现思路及原理,实现代码有一定的参考价值,大家能了解看看,接下来就跟随小编来一起学习一下吧!
    2022-12-09 17:52:57 
    摘要:检测步骤:1、自定义一个回调函数用于设置处理数组元素的条件,语法“function f($num){return(指定条件);}”;2、利用array_filter()调用回调函数来过滤数组,获取符合条件的元素,语法“array_filter($arr,"f")”;3、使用count()过滤获取数组的长度,并判断数组长度是否为0,如果为0则数组中没有符合条件的元素,反之则有。
    云活动
    推荐内容
    热门关键词
    热门信息
    群英网络助力开启安全的云计算之旅
    立即注册,领取新人大礼包
    • 联系我们
    • 24小时售后:4006784567
    • 24小时TEL :0668-2555666
    • 售前咨询TEL:400-678-4567

    • 官方微信

      官方微信
    Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
    增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
    免费拨打  400-678-4567
    免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
    微信公众号
    返回顶部
    返回顶部 返回顶部