• python的数组:列表、数组模块array与第三方库numpy的数组


    python的数组:列表、数组模块array与第三方库numpy的数组

    Python 没有内置对数组的支持,若想使用类似其他语言中的数组功能,怎么办?

    办法还是比较多的 :

    ☆Python中提供了列表(list),可以当作数组使用,如:相当于一维数组:listA=[1,2,3,4]

    相当于二维数组:listB=[[1,2,3],[4,5,6],[7,8,9]]

    关于list见 内置类型 — Python 3.10.6 文档

    ☆Python提供了array模块,但其只支持一维数组。因而不适合数值运算。array模块需要用import加载。关于array模块见array --- 高效的数值数组 — Python 3.10.6 文档

    ☆使用第三方扩展库numpy,需要先用pip install numpy安装,再用import加载,关于numpy见 NumPy 中文

    python 中的列表(list

    python 中的列表(list)能扮演其他语言中数组的角色(或者说列表与其他语言中的数组有些类似),但是要强大得多。其中一个方面就是,列表没有固定类型的约束。

    列表(list)操作:

    创建一个列表

    只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:

    list1 = [1, 2, 3, 4, 5 ];

    list2 = ['a',1,('a','b')]

    list3 = ['张三', '男', '2012-07-22', 2000];

    使用下标索引(第一个元素的索引为0)来访问列表中的值,同样你也可以使用方括号的形式截取字符,如list3[0] 就是'张三'

    向列表添加元素可用如下方法

    1)append()方法默认将元素添加到列表末尾,并且一次只能添加一个元素,如:

    list1. append(6)  现在list1就变为[1, 2, 3, 4, 5, 6]

    2)extend()方法可以添加多个元素,但是必须以列表的形式添加,如:

    list1.extend(['a','b'])  现在list1就变为[1, 2, 3, 4, 5, 6, 'a', 'b']

    3)如果想插队的话就需要使用insert(位置索引,元素)方法了,如;

    list1.insert(7,70),现在list1就变为[1, 2, 3, 4, 5, 6, 'a', 70,'b']。

    从列表中删除元素

    1)使用remove()实现指定元素的删除,如:

    list1.remove(70)  list1就变为[1, 2, 3, 4, 5, 6, 'a', 'b']

    2)当需要删除指定位置索引的元素时,使用del 语句https://docs.python.org/zh-cn/3/tutorial/datastructures.html#the-del-statement,如

    del list1[6]  list1就变为[1, 2, 3, 4, 5, 6, 'b']

    del后直接跟列表名可以删除整个列表。

    3)pop()方法可以移除索引元素,若不指定索引值作为参数时默认弹出最后一个元素,如:list1.pop(0)  list1就变为[2, 3, 4, 5, 6, 'b']

    遍历元素

    for x in list1:

       print(x)

    输出:

    2
    3
    4
    5
    6
    b

    通过嵌套列表的方式,我们可以模拟多维数组的功能。

    相当于二维数组的列表:listB=[[1,2,3],[4,5,6],[7,8,9]]

    listB[0][1] 代表2

    遍历二维列表,源码如下:

    list_2D=[[11,12,13,14],[15,16,17,18],[19,20,21,22]]

    for i in list_2D: #每一个列表都独占一行并输出[]

        print(i)

    print("---------------")

    for i in list_2D:

        for j in i:    #每一个元素都独占一行,不会打印[]

            print(j)

    运行之:

    使用嵌套列表来表示一个三维数组的例子:

    array_3d = [

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

        [[10, 11, 12], [13, 14, 15], [16, 17, 18]],

        [[19, 20, 21], [22, 23, 24], [25, 26, 27]]

    ]

    这样就创建了一个3x3x3的三维数组,可以通过索引来访问其中的元素,例如 array_3d[1][2][0] 表示访问第二个二维数组的第三个元素的第一个值。

    关于列表的操作可参见:

    https://docs.python.org/zh-cn/3/library/stdtypes.html#lists

    https://docs.python.org/zh-cn/3/tutorial/introduction.html#lists

    https://docs.python.org/zh-cn/3/tutorial/datastructures.html#more-on-lists

    Python的内置模块array

    python的内置模块(也称为标准库)是随着pyhon安装的时候默认自带的库,不需要下载安装的库。用import加载后就可以使用。

    array模块定义了一种对象类型,可以紧凑地表示基本类型值的数组:字符、整数、浮点数等。 数组属于序列类型,其行为与列表非常相似,不同之处在于其中存储的对象类型是受限的——元素必须为同一类型。

    要使用array,先要import array

    array的创建方法如下

    array(typecode[, initializer])

    typecode 类型代码字符来指示存储何种元素,参见下表,并由可选的 initializer 值进行初始化,该值必须为一个列表、bytes-like object(字节类对象) 或包含正确类型元素的可迭代对象。个可迭代对象来填充元素

    Type code

    C Type

    Python Type

    Minimum size in bytes

    'b'

    signed char

    int

    1

    'B'

    unsigned char

    int

    1

    'u'

    wchar_t

    Unicode character

    2

    'h'

    signed short

    int

    2

    'H'

    unsigned short

    int

    2

    'i'

    signed int

    int

    2

    'I'

    unsigned int

    int

    2

    'l'

    signed long

    int

    4

    'L'

    unsigned long

    int

    4

    'q'

    signed long long

    int

    8

    'Q'

    unsigned long long

    int

    8

    'f'

    float

    float

    4

    'd'

    double

    float

    8

    # array的创建

    int_arr = array.array('i', [1, 2, 3])

    str_arr = array.array('u', 'hello')

    array的方法和list基本相同,例如append,pop,insert,remove, index等。

    也可以遍历元素

    for x in int_arr:

       print(x)

    python内置模块array不支持二维数组。

    使用第三方扩展库numpy

    numpy 全称为 Numerical Python,是 Python 的一个以矩阵为主的用于科学计算的基础软件包。NumPy 和 Pandas、Matpotlib 经常结合一起使用,所以被人们合称为数据分析三剑客。Numpy 中有功能强大的 ndarray 对象,能创建 N 维的数组,另外还提供很多通用函数,支持对数组的元素进行操作、支持对数组进行算法运算以及提供常用的统计函数。

    对于第三方扩展库,需要先用pip install numpy安装,再用import加载。【Python标准库和第三方库简介 https://blog.csdn.net/cnds123/article/details/121167106】

    使用第三方扩展库Numpy创建数组有多种方式

    利用array()函数方式:

    import numpy as np

    创建一维数组

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

    创建二维数组

    nd_two = np.array([[1, 2, 3], [4, 5, 6]])

    使用下标索引(第一个元素的索引为0)来访问列表中的值,如nd_one[1] 就是2,nd_two[1][1]就是5

    NumPy 数组的维数称为秩(rank),秩就是轴的数量,即数组的维度,一维数组的秩为 1,二维数组的秩为 2,以此类推。每一个线性的数组称为是一个轴(axis),也就是维度(dimensions)。

    NumPy之一维数组遍历,示例源码:

    1. import numpy as np
    2. LA=np.array([1,2,3])
    3. for x in np.nditer(LA):
    4. print(x)

    运行之:

    NumPy之二维数组遍历,示例源码:

    1. import numpy as np
    2. nd_2D = np.array([[1, 2, 3], [4, 5, 6]])
    3. #使用flat属性,返回的是数组的迭代器
    4. for x in nd_2D.flat :
    5. print(x)
    6. print("---------")
    7. #使用nditer函数,可以返回数组的迭代器
    8. for x in np.nditer(nd_2D) :
    9. print(x)
    10. print("---------")
    11. ## 二维数组,每次遍历一行,以列表的形式返回一行的元素
    12. for x in nd_2D :
    13. print(x)

    运行之:

    列表和numpy的数组各有特点,使用时需要了解注意,例如:

    numpy库功能强大,在此不可能介绍全面,就不多说了,可参见其它资料。

  • 相关阅读:
    Spring Security 自定义授权服务器实践
    L2t*+NPS
    10道高频Vuex面试题快问快答
    淘宝/天猫API接口详情介绍(A类标准接口)
    Java锁对象
    JAVA学习(年薪计算器)
    mybatis选定的字段更新写法
    【国科大——认知计算】认知计算 第一次研讨课
    react-router-dom6学习11-如何使用路由监听上
    PyTorch 2.0 重磅发布:一行代码提速 30%
  • 原文地址:https://blog.csdn.net/cnds123/article/details/126322014