07-05 numpy基础知识

    技术2026-08-25  9

    numpy 基础用法

    一、数组创建

    创建数组 arr=np.array(list/tuple) 里边的元素可以是元素为int的list,也可以是元组, 但是最后数组表现形式都是array([…])

    ①使用array函数创建,语法格式为array(列表或元组) ②使用其他函数创建如arange、linspace、zeros等创建 ③掌握相关函数的用法

    import numpy as np

    1、一维数组的创建

    arr1=np.array([-9,3,4,6]) arr1---返回 array([-9,3,4,6]) 创建数组时可以指定元素的数据类型 arr1=np.array([-9,3,4,6],dtype='str') arr1---返回 array(['-9','3','4','6'])

    2、维数组的创建

    一般通过嵌套列表的形式 arr2=np.array([[1,2,3],[2,3,4],[4,5,6]]) arr2----返回矩阵 三行三列 array([[1,2,3], [2,3,4], [4,5,6]])

    3、(一维数组)数列的创建

    np.arange(0,10,0.5)---0为起始元素,步长为0.5,创建等差数列,到10结束,python 的range函数是 左闭右开,所以不会写到10

    4、创建等差数列

    np.linspace(1,10,11) --1位起始位数字,在1-10之间创建11个数字的等差数列 机制为: 1、求公差 (10-1/(11-1)=0.9 则返回数列为: array([1., 1.9, 2.8 , 3.7 , 4.6 ,5.5 ,6.4 ,7.3 , 8.2 ,9.1 ,10. ]) np.linspace(1,10,11,endpoint= False) endpoint的意思为:将产生的最后一个元素去掉 array([1., 1.9, 2.8 , 3.7 , 4.6 ,5.5 ,6.4 ,7.3 , 8.2 ,9.1 ])

    5、创建等比数列

    np.logspace(1,5, base=2,num=10) 创建以2为底,幂在1-5之间的10个元素的等比数列 机制: ①先创建15之间10个元素的等差数列, 等价于 np.linspace(1,5,10) ②以2为底,以上述等差数列的每一个元素为幂求10个元素的等比数列, 等价于 2**np.linspace(1,5,10)

    6、

    np.zeros([5,5]) --元素全部为055列的二位数组的创建 np.zeros(6--6个元素全部为0的一维数组的创建 如:np.zeros([4,5]) array([[0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.]]) np.zeros([2,3]) ---错误的,无法创建23列的0元素数组,因为函数中的参数不是list or tuple;

    7、

    np.ones(7,6--元素全部为176列的二位数组的创建` array([[1., 1., 1., 1., 1., 1.], [1., 1., 1., 1., 1., 1.], [1., 1., 1., 1., 1., 1.], [1., 1., 1., 1., 1., 1.], [1., 1., 1., 1., 1., 1.], [1., 1., 1., 1., 1., 1.], [1., 1., 1., 1., 1., 1.]])

    8、

    np.eye(7) 单位矩的创建 行数等于列数=6 ,对角线元素为1,其余元素都未0 array([[1., 0., 0., 0., 0., 0., 0.], [0., 1., 0., 0., 0., 0., 0.], [0., 0., 1., 0., 0., 0., 0.], [0., 0., 0., 1., 0., 0., 0.], [0., 0., 0., 0., 1., 0., 0.], [0., 0., 0., 0., 0., 1., 0.], [0., 0., 0., 0., 0., 0., 1.]])

    9、

    np.diag([1,2,3]) 对角矩阵的创建 参数为对角元素,元素个数=行数=列数 array([[1, 0, 0], [0, 2, 0], [0, 0, 3]]) np.diag([1,2,3]) + 1 ---矩阵中的每一个元素都+1 array([[2, 1, 1], [1, 3, 1], [1, 1, 4]])

    二、数组属性

    注:属性参数函数后边没有 (), 1、arr1.ahspe ---数组arr1的形状 有几行几列 返回 (3,4---该数组有342、arr1.ndim ---查看数组的维度 2 ----arr1数组是二维数组,既有行数又有列数 注:一维数组查看形状时返回 (2,) ,即第二个数字为空值 3、arr1.size 查看数组共有多少个元素 19 数组有19个元素 4、arr1.dtype 查看数组的元素的类型 返回 dtype('int32'--该数组有32个整型元素

    三、索引和切片

    一、简单索引

    1、普通索引

    矩阵的行数和列数的index从左上角开始,从0开始 arr1[2] ----访问数组arr1的第三(1+2)行,即行索引 arr1[2,3]---访问数组arr1的第三(1+2)行第四(3+1)个元素--2位行索引,3位列索引 arr1[2][1]---访问数组的第三行第二个元素

    一维数组的切片和list很像,但是数组的处理速度比list快很多

    如: arr1=np.arange(1,10,1) ----array([1,2,3,4,5,6,7,8,9]) 倒过来排列 arr1[ : : -1] arr1[-4:-2] 从倒数第四位取到倒数第二位(左闭右开) 元素的修改:及重命名 arr1[5]=12 ----array([1,2,3,4,5,12,7,8,9]) arr1[1,3]=[120,110] 将下标为12 的两位元素修改为120110 ---array([1,120,110,4,5,12,7,8,9])

    二维数组:

    data2=( (1,2,3,4),(2,3,34,34),(23,12,32,4),(45,65,34,23)) arr2=np.array(data2) ---返回 array([1,2,3,4], [2,3,34,34], [23,12,32,4], [45,65,34,23]) arr2[2,3] 注: 访问第三行 第四列( 逗号,前边的表示行数索引-- 逗号,后边的表示列索引) arr2[ : , 2:4] 访问 所有行数(行数不加限制),第三列到第四列(不包含第五列--所有这样的都是包前不包后) arr2[1:3] 访问第二行到第三行,列数不加限制 arr2[1: , 2:] 访问第二行到所有,第三列到所有

    2、逻辑索引

    ①arr2>=30 ,判断每个元素与30相比较,返回True or false arr2[arr2>30] ---返回数组arr2中所有大于30的元素,存放于新的一维数组中 -----注:返回值为新的 一维数组 ②~(arr2>=30) 取每个元素与30相比较判断结果的相反情况 arr2(~(arr2>=30)) ---取数组arr2中比30小的所有元素组成新数组 ③并列条件 ( arr2>3.5 )& ( arr2<10 ) ---在每个元素位置上返回判断结果 true or false arr2( ( arr2>3.5 )& ( arr2<10 ) ) 将两个条件都满的值取出来组成新数组 注意: 按条件取满足条件的远近苏组成新数组时,数组名称前后不可变, arr1[arr1>1] --------正确 arr2[arr1>1]------错误,报错 name 'arr2' is not defined
    Processed: 0.010, SQL: 9