python模块专题——5.numpy

27 篇文章 1 订阅
12 篇文章 1 订阅

numpy用于数值计算。

1.简介

Numpy提供了一个在Python中做科学计算的基础库,重在数值计算,主要用于处理多维数组(矩阵)的库。用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多。本身是由C语言开发,是个很基础的扩展,Python其余的科学计算扩展大部分都是以此为基础。

  • 高性能科学计算和数据分析的基础包
  • ndarray,多维数组(矩阵),具有矢量运算能力,快速、节省空间
  • 矩阵运算,无需循环,可完成类似Matlab中的矢量运算
  • 线性代数、随机数生成

2.安装与使用

  • 已有发行版:anaconda/winpython/Pyzo

  • 使用pip安装:pip install numpy

    import numpy as np
    np.arange(n[,dtype=int/float/bool])
    np.array([[],[]])
    

3.基本操作

3.1 创建数组

  • 由列表创建

    a=np.array([[1,3,2,5],[1,2,2,7]])

  • arrange

    np.arange(5,dtype=int)

3.2 常见操作

  • 查看维度:np.shape(arr)

  • 修改维度:arr.reshape((row,col)) 本身不修改,返回修改的数组。如果为一维,需要是(n,)。(n,1)和(n,)是不一样的。亦可np.reshape(c,(row,col))

  • 查看类型:

    type(arr) numpy.ndarray 数组类型

    arr.dtype int32 元素类型

  • 修改数据类型:arr.astype("") 科学计数法转整数为int

  • 拉平操作:arr.flatten() 展开成一维

  • 广播运算:加/减/乘/除上一个常数,为数组中所有元素加/减/乘/除

    广播原则:若两数组的后缘维度的轴长度相符或一方长度为1,则认为是广播兼容,广播在缺失和长度为1的维度上进行

  • 同维运算

  • 保留小数位数:np.round(arr,n)

  • 转置:arr.transpose()

  • 交换轴:swapaxes(1,0)

    :由数组调用的方法,不改变原数组,而是返回修改后的数组

3.3 读取数据

  • CSV文件(Comma-Separated Value)
  • np.loadtxt(frame,dtype=np.float/str/int,delimiter=“,”,skiprows=0,usecols=None,unpack=False)
    • frame文件、字符串或产生器,可以是压缩文件
    • dtype加载数据类型
    • delimiter分隔符,默认空格
    • skiprows跳过前x行
    • usecols读取指定列,索引、元组类型
    • unpack转置,True时分别写入不同数组变量,False只写入一个变量

3.4索引与切片

  • 取某一行:arr[n]
  • 取连续多行:arr[n:]
  • 取不连续多行:arr[[a,b,c,d,…]]
  • 取行列:arr[a,b] 其中a,b可以用连续和离散方式表示,离散时前后长度一致
  • 布尔索引
    • arr<n:返回数组中所有位置是否满足该条件,返回满足条件的索引
    • 三元运算符:np.where(condition,val1,val2) condition是arr相关条件
    • 裁剪:arr.clip(a,b)小于a的替换成a,大于b的替换成b
    • 注:三元运算符和裁剪均不修改原数组
    • np.nan是float类型

3.5 数据操作

  • 数据拼接
    • 竖直拼接
      • np.vstack((,))
    • 水平拼接
      • np.hstack((,))
  • 数据生成
    • 全0:np.zeros((row,col))
    • 全1:np.ones((row,col))
    • 单位阵:np.eye(n)
  • 获取最值及位置
    • np.max(arr,axis=0)
    • np.min(arr,axis=0)
    • np.argmax(arr,axis=0)
    • np.argmin(arr.axis=1)
    • np.sum(arr,axis=0) arr.sum(axis=0)
  • 随机数生成 np.random.
    • rand(d0,d1,…)多维均匀分布
    • randn(d0,d1,…)标准正态分布
    • randint(low,high,(shape))整数
    • uniform(low,high,(shape))均匀分布
    • normal(mu,sigma,(size))正态分布
    • seed(s)随机数种子 设定之后,使得产生相同随机数
  • nan和inf
    • 缺失值,不合理运算
    • np.nan和np.inf均为float类型
    • np.nan!=np.nan
    • 判断nan:np.isnan(a)或a!=a
    • 判断数组中nan的个数
      • np.count_nonzero(a!=a)
      • np.count_nonzero(np.isnan(a))
    • 缺失值处理
      • 删除有缺失值的一行
      • 替换为列均值(中值)

3.6 统计函数

  • sum
  • mean
  • np.median(arr,axis=0)
  • max
  • min
  • np.ptp极值差
  • std
  • 默认返回多维数组的全部统计结果,若指定指定坐标轴axis,则返回该轴上结果

Notice

应博友的要求,创建了一个QQ群,方便大家学习交流,群内也会经常分享一下学习资源。有兴趣的小伙伴可以加群哦!
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Regent Wan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值