numpy基础知识

caid

分类: 人工智能、学习笔记、编程语言 1429 2

概念

科学计算基础库,多作为数值计算、在大型、多维数组上执行数值运算。

  1. 创建数组
    import numpy as np
    a = np.array([1,2,3,4,5])
    b = np.array(range(1,6))
    c = np.arange(1,6)
    # 其中 a = b = c
    np.arange的用法:arange([start], stop[, step,], dtype=None)
    
    • c.dtype获取c中数据的类型
    • c.astype(‘int8’)修改数据类型
    • np.round(c, 2), 将元素为小数类型的数组,保留2位小数
  2. 数组的形状
     t = np.array([[1,2,3], [4,5,6]])
     t.shape # 获取t的形状,即维数
    
    • reshape((2,3)) 修改形状,修改后是新值,而原数组不变
    • flatten() 展开数组
    • shape的值:一个值(a, ) ----- 一维 ----- a表示数组中元素的个数两个值(a, b ) ----- 二维 ---- a表示数组中元素的行数,b表示数组中元素的列数三个值(a, b,c ) ----- 三维 ---- a表示数组中元素的块,b表示数组中每一块元素的行数,c表示数组中每一块元素的列数
  3. 计算
    • 数组 和 常数:数组中每一个元素和常数进行运算。其中:(0/0=nan ; 非零常数/0 = inf)
    • 数组(a) 和 数组(b)
      • 二维:(1)维数相同: 两个数组对应位置上的元素进行运算(2)行数相同(a(3,1),b(3,5)): b的每一列和a进行运算(3)列数相同(a(1,2),b(4,2)): b的每一行和a进行运算(4)行数和列数不等:报错
      • 多维(广播原则)如果两个数组的后缘维度(从末尾开始算起的维度)的轴长度相符或其中方的长度为1,则他们是广播兼容的。广播会在缺失和(或)长度为1的维度上进行。eg: (3,3,3)和(3,2) --> 不兼容​ (3,3,2)和(3,2) --> 兼容
    • 一维:0轴
    • 二维:横为0轴,纵为1轴
    • 三维:块为0轴,每一块的横为1轴,每一块的纵为2轴
  4. 读取本地数据np.loadtxt(frame,dtype=np.float,delimiter=None,skiprows=0,usecols=None,unpack=False)frame: 文件路径dtype:读取为指定的数据类型delimiter:分割字符串

    skiprows:跳过的行(如:标题行)

    usecols:读取的数据的列

    unpack:若为true,矩阵转置

    numpy 转置:

    (1)transpose() 方法

    (2)T属性

    (3)swapaxes(1,0)方法,0和1分别为轴

索引和切片

  1. 取行
    • 单行: t[行数]
    • 连续多行:t[行数:],从指定行数开始连续取数组的行
    • 不连续:t[[1,5,8]], 取第1、5、8行
  2. 取列
    • 单列:t[行,列],取指定的行和列,其中:表示都要,如t[1,:]表示第二行的所有列例:
      import numpy as np
      t = np.arange(6).reshape((3,2))
      print(t[1,:])  # 取第二行的所有列,结果:[2 3]
      print(t[2:,:])  # 取第三行之后所有行对应的所有列,结果:[[4 5]]
      print(t[[0,2],:])  # 取第一行和第三行的所有列,结果:[[0 1] [4 5]]
      print(t[1:3,0:2])  # 取第二行到第三行对应的第1列到第2列,结果:[[2 3] [4 5]]
      # 注:其中1:3中3为切片,即含头不含尾,真实值为1到2,所以3对应的是索引为2,而索引为2对应的值为第三行的值。
      
  3. 取不相邻的点t[[0,2],[0,1]], 取下标为(0,0)和(2,1)对应的值

修改

  • 条件修改t[t<10]=3 将t中小于10的值
  • where方法np.where(条件,符合条件的元素要赋的值,不符合条件的元素要赋的值)ge: np.where(t>10, 0, 20) 将t中小于10 的元素替换为10,大于等于10的赋值为20
  • clip方法t.clip(value1,value2) 把小于value1的元素替换为value1, 大于value2的元素替换为value

常用函数

 

  1. 计算函数
  • 求和
    1. 整个数组的和:np.sum(数组)
    2. 各个列对应的和:np.sum(数组,axis=0)
    3. 各个行对应的和:np.sum(数组,axis=1)
  • 均值 t.mean(a,axis=None)
  • 中值 np.median(t,axis=None)
  • 最大值 t.max(axis=None)
  • 最小值 t.min(axis=None)
  • 极值 np.ptp(t,axis=None)
  • 标准差 t.std(axis=None)
  1. 操作函数
    • 拼接
      • np.vstack((t1, t2)) 竖直拼接
      • np.hstack((t1, t2)) 水平拼接
    • 分割:竖直分割(水平划线)

      ​ 水平分割(竖直划线)

  2. 交换

    t[[1,2], :] = t[[2,1], :] 行交换

    t[:, [1,2]] = t[:, [2,1]] 列交换

  3. 常用函数

    创建全为0的数组:np.zeros((2,2))

    创建全为1的数组:np.ones((2,2))

    创建三角方阵:np.eye(2)

    获取每列最大值的坐标:np.argmax(数组,axis=0)

    获取每行最小值的坐标:np.argmin(数组,axis=1)

    创建随机分布数组 np.random.random(2,3) 创建两行三列的随机分布

    创建标准正态分布数组 np.random.randn(2,3) 创建两行三列的标准正态分布

    创建指定区间的随机整数数组 np.random.randint(start,end,(row, col))

  • 4人 Love
  • 0人 Haha
  • 0人 Wow
  • 1人 Sad
  • 0人 Angry
numpy、Python、人工智能

作者简介: caid

共 2 条评论关于 “numpy基础知识”

Loading...