Numpy

目录

1、Numpy的核心array

array对象的背景:

array本身的属性

创建array的方法


2、Numpy的核心array

array对象的背景:

  • Numpy的核心数据结构,就叫做array就是数组,array对象可以是一维数组,也可以是多维数组;
  • Python的List也可以实现相同的功能,但是array比List的优点在于性能好、包含数组元数据信息、大量的便捷函数;
  • Numpy成为事实上的Scipy、Pandas、Scikit-Learn、Tensorflow、PaddlePaddle等框架的“通用底层语言”
  • Numpy的array和Python的List的一个区别,是它元素必须都是同一种数据类型,比如都是数字int类型,这也是Numpy高性能的一个原因;

array本身的属性

  • shape:返回一个元组,表示array的维度
  • ndim:一个数字,表示array的维度的数目
  • size:一个数字,表示array中所有数据元素的数目
  • dtype:array中元素的数据类型

创建array的方法

  • 从Python的列表List和嵌套列表创建array
  • 使用预定函数arange、ones/ones_like、zeros/zeros_like、empty/empty_like、full/full_like、eye等函数创建
  • 生成随机数的np.random模块

3、Numpy对数组按索引查询

三种索引方法:

  • 基础索引
  • 神奇索引
  • 布尔索引

4、Numpy常用random随机函数汇总

5、数据统计函数

1、Numpy有哪些数学统计函数:

函数名说明
np.sum所有元素的和
np.prod所有元素的乘积
np.cumsum元素的累积加和
np.cumprod元素的累积乘积
np.min最小值
np.max最大值
np.percentile0-100百分位数
np.quantile0-1分位数
np.median中位数
np.average加权平均,参数可以指定weights
np.mean平均值
np.std标准差
np.var方差

2、怎样实现按不同的axis计算

以上函数,都有一个参数叫做axis用于指定计算轴为行还是列,如果不指定,那么会计算所有元素的结果

3、实例:机器学习将数据进行标准化

A = (A - mean(A, axis=0)) / std(A, axis=0)

7、numpy怎样给数组增加一个维度

背景:
很多数据计算都是二维或三维的,对于一维的数据输入为了形状匹配,经常需升维变成二维

需要:
在不改变数据的情况下,添加数组维度;(注意观察这个例子,维度变了,但数据不变)
原始数组:一维数组arr=[1,2,3,4],其shape是(4, ),取值分别为arr[0],arr[1],arr[2],arr[3]
变形数组:二维数组arr[[1,2,3,4]],其shape实(1,4), 取值分别为a[0,0],a[0,1],a[0,2],a[0,3]

实操:
经常需要在纸上手绘数组的形状,来查看不同数组是否形状匹配,是否需要升维降维

3种方法:

  • np.newaxis:关键字,使用索引的语法给数组添加维度
  • np.expand_dims(arr, axis):方法,和np.newaxis实现一样的功能,给arr在axis位置添加维度
  • np.reshape(a, newshape):方法,给一个维度设置为1完成升维

8、没看懂

9、数组合并

背景:在给机器学习准备数据的过程中,经常需要进行不同来源的数据合并的操作。

两类场景:

  1. 给已有的数据添加多行,比如增添一些样本数据进去;
  2. 给已有的数据添加多列,比如增添一些特征进去;

以下操作均可以实现数组合并:

  • np.concatenate(array_list, axis=0/1):沿着指定axis进行数组的合并
  • np.vstack或者np.row_stack(array_list):垂直vertically、按行row wise进行数据合并
  • np.hstack或者np.column_stack(array_list):水平horizontally、按列column wise进行数据合并

10、数组排序

Numpy给数组排序的三个方法:

  • numpy.sort:返回排序后数组的拷贝
  • array.sort:原地排序数组而不是返回拷贝
  • numpy.argsort:间接排序,返回的是排序后的数字索引

3个方法都支持一个参数kind,可以是以下一个值:

  • quicksort:快速排序,平均O(nlogn),不稳定情况
  • mergesort:归并排序,平均O(nlogn),稳定排序
  • heapsort:堆排序,平均O(nlogn),不稳定排序
  • stable:稳定排序

kind默认值是quicksort,快速排序平均情况是最快,保持默认即可

11、数组乘法

按照两个相乘数组A和B的维度不同,分为以下乘法:

  1. 数字与一维/二维数组相乘;
  2. 一维数组与一维数组相乘;
  3. 二维数组与一维数组相乘;
  4. 二维数组与二维数组相乘;

numpy有以下乘法函数:

  1. *符号或者np.multiply:逐元素乘法,对应位置的元素相乘,要求shape相同
  2. @符号或者np.matmul:矩阵乘法,形状要求满足(n,k),(k,m)->(n,m)
  3. np.dot:点积乘法

解释:点积,也叫内积,也叫数量积
两个向量a = [a1, a2,…, an]和b = [b1, b2,…, bn]的点积定义为:
a·b=a1b1+a2b2+……+anbn。

12、广播概念

广播:
简单理解为用于不同大小数组的二元通用函数(加、减、乘等)的一组规则

广播的规则:

  1. 如果两个数组的维度数dim不相同,那么小维度数组的形状将会在左边补1
  2. 如果shape的维度不匹配,但是有维度是1,那么可以扩展维度是1的维度匹配另一个数组;
  3. 如果shape的维度不匹配,但是没有任何一个维度是1,则匹配失败引发错误;

13、求解线性方程

# 调用solve方法直接求解

没看懂

14、实现SVD矩阵分解

没看懂

15、实现多项式曲线拟合

问题定义:
对于一堆数据点(x, y),能否只根据这些数据,找出一个函数,使得函数画出来的曲线和原始数据曲线尽量匹配?

多项式拟合问题:
任何可微连续的函数,都可以用一个N次多项式来估计,而比N次幂更高阶的部分为无穷小可以忽略不计

3次多项式即:a𝑥3x3 + b𝑥2x2 + cx + d
比如我们可以让sin(x) 约等于 a𝑥3x3 + b𝑥2x2 + cx + d

16、numpy使用matplotlib实现可视化绘图

可以直接将Numpy的数组传给Matplotlib实现可视化绘图:

  1. 曲线图
  2. 饼图
  3. 柱状图
  4. 直方图

17、numpy计算矩阵求解线性方程

没看懂

18、将数组读写到文件

本文档介绍的是Numpy以自己内建二进制的方式,将数组写出到文件,以及从文件加载数组;

如果是文本、表格类数据,一般使用pandas这个类库做加载和处理,不用numpy

几个方法:

  1. np.load(filename):从.npy或者.npz文件中加载numpy数组
    如果文件后缀是.npy返回单个数组,如果文件后缀是.npz返回多个数组的字典
  2. np.save(filename, arr):将单个numpy数组保存到.npy文件中
  3. np.savez(filename, arra=arra, arrb=arrb):将多个numpy数组保存到.npz未压缩的文件格式中
  4. np.savez_compressed(filename, arra=arra, arrb=arrb):将多个numpy数组保存到.npz压缩的文件格式中

.npy和.npz都是二进制格式文件,用纯文本编辑器打开都是乱码

19、结构化数组

没看懂

20、numpy与pandas数据相互转换

  1. Numpy数组怎样输入给Pandas的Series、DataFrame;
  2. Pandas的Series、DataFrame怎样转换成Numpy的数组

21、numpy数据输入给scikit-learn实现模型训练

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值