美文网首页
Python进阶06_除了列表,还有谁谁谁

Python进阶06_除了列表,还有谁谁谁

作者: 瓦力人工智能 | 来源:发表于2019-10-18 14:52 被阅读0次

    除了列表,还有谁谁谁

    数组

    何时使用数组:需要一个只包含数字的列表;
    数组可以做什么:

    • 支持所有跟可变序列有关的操作,包括 .pop、.insert 和 .extend
    • 提供从文件读取和存入文件的更快的方法,如 .frombytes 和 .tofile

    如何创建数组

    • 创建数组需要一个类型码,这个类型码用来表示在底层的 C 语言应该存放怎样的数据类型。
    • b 类型码代表的是有符号的字符

    数组的读取和写入:
    array.tofile 和 array.fromfile 用起来很简单,它的速度也很快。

    #从创建一个有 1000 万个随机浮点数的数组
    from array import array
    from random import random
    
    floats = array('d',(random() for i in range(10**7)))
    
    print(floats[-1])
    print(len(floats))
    
    0.275005837260377
    10000000
    
    # 写入文件数组
    fp = open('floats.bin','wb')
    # 把数组存入一个二进制文件里
    floats.tofile(fp)
    fp.close()
    
    
    # 读取文件数组
    floats2 = array('d')
    fp = open('floats.bin','rb')
    # 把 1000 万个浮点数从二进制文件里读取出来
    floats2.fromfile(fp,10**7)
    fp.close()
    print(floats2[-1])
    print(floats == floats2)
    
    0.275005837260377
    True
    

    列表和数组的属性和方法

    列表和数组的属性和方法对比 列表和数组的属性和方法对比

    内存视图

    memoryview 是一个内置类,它能让用户在不复制内容的情况下操作同一个数组的不同切片。在数据结构之间共享内存。
    memoryview.cast 的概念跟数组模块类似,能用不同的方式读写同一块内存数据,而且内容字节不会随意移动。

    import array
    
    numbers = array.array('h',[-2,-1,0,1,2])
    # memv 里的 5 个元素跟数组里的没有区别
    memv = memoryview(numbers)
    # 显示地址
    print(memv)
    print(len(memv))
    print(memv[0],memv[1])
    print(memv.tolist())
    
    #把 memv 里的内容转换成 'B' 类型,也就是无符号字符
    memv_oct = memv.cast('B')
    print(memv_oct.tolist())
    # 把位于位置 5 的字节赋值成 4
    memv_oct[5] = 4
    #占 2 个字节的整数的高位字节改成了 4
    print(numbers)
    
    <memory at 0x000001D5ECB1F648>
    5
    -2 -1
    [-2, -1, 0, 1, 2]
    [254, 255, 255, 255, 0, 0, 1, 0, 2, 0]
    array('h', [-2, -1, 1024, 1, 2])
    

    NumPy和SciPy

    NumPy 和 SciPy不是标准的Python库,是第三方的库。它们提供的高阶数组和矩阵操作。正是有了这么强大的第三方库,让Python 成为科学计算应用的主流语言。Python的灵活强大也就是基于很多丰富的第三方库。

    Numpy: 实现了多维同质数组(homogeneous array)和矩阵
    Scipy: SciPy 是基于 NumPy 的另一个库,它提供了很多跟科学计算有关的算法,专为线性代数、数值积分和统计学而设计。

    import numpy as np
    a = np.arange(12)
    print(a)
    print(type(a))
    print(a.shape)
    a.shape = 3,4
    print(a)
    print(a.shape)
    print(a[1])
    print(a[:,1])
    
    
    [ 0  1  2  3  4  5  6  7  8  9 10 11]
    <class 'numpy.ndarray'>
    (12,)
    [[ 0  1  2  3]
     [ 4  5  6  7]
     [ 8  9 10 11]]
    (3, 4)
    [4 5 6 7]
    [1 5 9]
    

    分享关于人工智能,机器学习,深度学习以及计算机视觉的好文章,同时自己对于这个领域学习心得笔记。想要一起深入学习人工智能的小伙伴一起结伴学习吧!扫码上车!

    瓦力人工智能 - 扫码上车

    相关文章

      网友评论

          本文标题:Python进阶06_除了列表,还有谁谁谁

          本文链接:https://www.haomeiwen.com/subject/ozuoectx.html