• 泰迪·滇西科技师范学院智能工作室分享:第一章NumPy库——先基础区别数组和列表


    前言

    来看NumPy库的应该都是接触到庞大数据处理的朋友吧。NumPy是一个简洁好用的数据库,尤其是在科学计算上,专为进行严格数字处理而产生的。其中的ndarray可以说是NumPy库的心脏,它提供了一个强大的N维数组对象,这一章我们先来简洁的了解一下数组和列表的区别。

    ndarray数组or列表?

    1.创建方式不同

    list是Python中基础的数据类型,不用引入任何库包,直接使用[  ]创建即可(例如:a=['CSDN','123']);ndarray是NumPy函数库中的函数,在使用array时需要引入NumPy数据库:

    实例1:

    ~~~python

    import numpy as np

    # 用普通的英语理解这句语法,导入numpy库当作np,即起小名字,别号

    j=np.array([1,2,3,4])

    ~~~

    2.存储对象不同

    列表可以存储任何的对象,包括数字,字符串,数组,字典等等;而数组只能存储单一的数据类型(当然混杂起来存储也不是不行,需要修改数据类型为object,但是这已经违背了产生这个函数库的初衷),存储类型的不同,也决定了我们应该在什么时候用到ndarray数组亦或是列表;

    实例2:

    ~~~python

    import numpy as np

    g=np.array(['欢迎!','这里是CSDN',123])

    print(g)

    print(type(g[2]))

    ~~~

    这一段代码看似已经不符合array数组只能存储单一数据的性质,因为123是整型数据,而前面两个元素都是字符串,其实不然,123的数据类型已经被它偷偷的转换了

    >代码运行结果如下

     可以看到123的数据类型已经被转换成字符串的类型

     3.运算方式不同

    数组可以进行四则运算,它会对数组中的每一个元素对应进行运算;而列表只能使用加号进行拼接,拼接之后会形成一个新的列表:

    实例2

    ~~~python

    g=['欢迎','来到']

    l=['CSDN','!']

    print(g+l)

    ~~~

    运行结果如下:

     4.运行效率不同

    array数组是为了精确便捷的处理“庞大的类似的”数据而产生的,他的存储效率要比列表快着很多

    实例3:

    ~~~python

    import numpy as np

    import datetime

    #datetime.datetime.now()是为了获取当前时间

    start1=datetime.datetime.now()

    g=[]                      #创建一个空列表

    for i in range(1,100000): #循环将1至1000000的数字添入列表中

        g.append(i)

    end1=datetime.datetime.now()

    start2=datetime.datetime.now()

    l=np.array(g)            #将z列表的数字依次复制到j数组

    end2=datetime.datetime.now()

    print('list存储时间:',end1-start1)

    print('数组存储时间:',end2-start2)

    ~~~

    代码运行结果如下:

     一般array存储数据的速度比列表存储数据的速度快,这一点尤其体现在多而重复的数据处理上,大家可以去Python中尝试一下

    总结:数组和列表的运用

    1.列表因为其存储的类型可以是任何对象,因此列表的用处更广泛,更多样化,并且列表可以有更多的存储空间去使用,而数组使用的空间就相对较少

    2.列表多样化也不一定是好处,因为列表存储的方式和存储类型杂乱,导致在处理一些庞大重复的数据时占据的资源太多

    3.ndarray数组和列表处理数据的时间对于我们来说只是一眨眼的事情,但是对于计算机来说却不可忽略,尤其在进行大量数据处理时,数组和列表处理数据的时间差别会更明显

    4.在计算机编程中,我们一般要求代码简洁,快速,并且占用的运行资源少,因此就诞生了NumPy函数库,用于更加精确便捷的科学计算

    后面将会以小白的视角持续去记录自己的学习心得,有描述的不对的地方,希望大家予以指出并多多支持~

  • 相关阅读:
    商品推荐_后端的一些操作
    HTML+CSS滚动条样式如何单独给firefox设置 scrollbar-width: none;,而不影响其他浏览器
    Vue知识系列(5)每天10个小知识点
    植物大战僵尸杂交版全平台 PC MAC 安卓手机下载安装详细图文教程
    CSS 3之美化表格样式(二)
    Kotlin中的步长
    JavaScript 的面向对象基础,设计模式中的原型模式(设计模式与开发实践 P2)
    Pair<Long,String>接收mybatis查询的结果储存的却是BigInteger
    How to install oracle19c in Centos8
    ffmpeg录屏命令
  • 原文地址:https://blog.csdn.net/tipdm0526/article/details/128183984