import numpy as np

一、为何用numpy?

1 numpy为何如此高效?

numpy是由c语言编写的
1 编译型语言vs解释型语言:C语言执行时,整体速度更快
2 连续单一存储vs分散多变类型存储
nunpy数组内数据类型必须是一致的
numpy数组内存储在连续内存中,python列表分散存储在内存中
3 多线程vs线程锁
python执行时,有线程锁,无法实现真正的多线程并行,c语言则可以

2 什么时候用numpy?

在数据处理过程中,需要使用python实现向量化矩阵化操作的时候,优先考虑numpy
如:两个向量相乘、矩阵乘法

二、numpy的创建

1 从列表创建

基本格式:x=np.array([列表])

设置数组类型:x=np.array([列表],dtype=“数据类型”)

二维数组的创建:x=np.array([[1,2,3],

[4,5,6]])

2 从头构建数组

构建全0数组

np.zeros(5,dtype=int)  一维数组,元素为整型

np.zeros((2,2),dtype=float)  二维数组,元素为浮点型

构建2*4的浮点型数组,值为1

np.ones((2,4),dtype=float)

构建3*5的数组,值为8.8

np.full((3,5),8.8)

创建一个3*3的单位阵

np.eye(3)

创建一个序列数组,1开始到15结束,步长为2

np.arange(1,15,2)

等差数列

np.linspace(0,1,4)

等比数列

np.logspace(0,9,10)

创建3*3在(0,1)之间均匀分布的数组

np.random.random((3,3))

创建一个3*3,均值为0,标准差为1的高斯分布数组

np.random.normal(0,1,(3,3))

创建一个3*3 [0,10)之间随机整数构成的整数组

np.random.randint(0,10,(3,3))

随机重排

法一:np.random.permutation(x)--该方法不修改原列表,而是产生一个新副本

法二:np.random.shuffle(x)--该方法直接对原列表进行重排操作

随机采样

按指定形状采样:np.random.choice(x,size=(a,b))

按概率采样:np.random.choice(x,size=(a,b),p=x/sum(x))

三、numpy的性质

1 数组的属性

形状:x.shape

维度:x.nidm

大小:x.size--就是元素的个数

2 数组的索引

一维数组的索引

x[0],x[5],x[-1]---与列表的索引一样

多维数组的索引--以二维数组为例

x[1][1]或者x[1,1]都可

3 数组的切片

一维数组的切片--与列表一样

x[:3]

x[3:]

x[::-1]

多维数组的切片--以二维为例

x[:2,:3]

x[:2,0:3:2]

x[::-1,::-1]

获取数据的行和列

x[1,:]--第一行

x[:,2]--第二列

ps:数据的切片获取的是视图,而非副本,改变切片值原数据也会随之发生改变

想要只修改切片,原数据不改变的方式

x1=x[:2,:2].copy()

4 数据的变形--reshape((型状))

x.reshape((形状))

一维向量转行向量:x1=x.reshape(1,x.shape[0])      /      x1=x[np.newaxis,:]

一维向量转列向量:x1=x.reshape(x.shape[0],1)     /       x1=x[:,np.newaxis]

多维向量转一维向量

x1=x.flatten()--返回副本

x1=x.reval()--返回视图

x1=x.reshape(-1)--返回视图

5 数组的拼接

水平拼接:np.hstack([x1,x2])       np.c_[x1,x2]

垂直拼接:np.vstack([x1,x2])        np.r_[x1,x2]

返回值都是一个副本

6 数组的分裂

一维数据分裂:x1,x2,x3=np.split(x,[2,7])

行数据分裂:left,middle,right=np.hsplit(x,[2,4])

列数据分裂:up.middle,down=np.vsplit(x,[2,4])

四、Numpy的四大运算

1 向量化运算

1)与数字的加减乘除

 2)绝对值、三角函数、指数、对数

绝对值:abx(x)

三角函数:np.sin(theta)   np.cos(theta)   np.tan(theta)   np.arcsin(x)   np.arccos(x)   np.arctan(x)

指数:np.exp(x)

对数:np.log(x)   np.log2(x)   np.log10(x)

3) 两个数组的运算

 2 矩阵运算

转置:x.T

乘法:x.dot(y)   np.dot(x,y)   y.dot(x)   np.dot(y,x)

3 广播运算

规则:
如果两个数组形状在维度上不匹配
那么数组的形式会沿着维度为1的维度进行扩展以匹配另一个数组的形状

4 比较运算和掩码

1)比较运算

x>50--返回bool矩阵,满足的元素True,不满足的False

2)操作布尔数组

np.sum(x>5)  计算数据中,大于5的元素个数

np.all(x>=0)  元素是否全部大于等于0

np.any(x==6) 是否有元素等于6

np.all(x<8,axis=1) 每一行是否都小于8   axis=1按行,axis=0按列

3)将布尔数组作为掩码

x[x>5]--返回x中大于5的元素

5 花哨的索引

1)一维数组

ind=[2,6,9]

x[ind]

ind=np.array([[1,0],

[2,3]])

x[ind]

返回的x取值来自x的元素,形状与ind相同

2)多维数组

row=np.array([0,1,2])

col=np.([1,3,0])

x[row,col]

五、其它numpy的通用函数

1 数值排序

np.sort(x)--不改变原数组,产生新数组

x.sort()--永久性改变原数组

获取排序的索引信息

np.argsort(x)

2 最大值最小值

np.max(x)  np.max(x,axis=1)

np.min(x)

加arg是求最大值最小值的索引

np.argmax(x)

np.argmin(x)

3 数值求积、求和

np.sum(x)

按行求和:np.sum(x,axis=1)

按列求和:np.sum(x,axis=0)

np.prod(x)

np.prod(x,axis=1)

np.prod(x,axis=0)

4 中位数、均值、方差、标准差

中位数:np.median(x)

均值:np.mean(x)

方差:np.var(x)

标准差:np.std(x)

拍森 | numpy库相关推荐

  1. 三、Python数据挖掘(Numpy库)

    三.Python数据挖掘(Numpy库) 目录: 三.Python数据挖掘(Numpy库) 一.Numpy 简介 二.认识N维数组 ndarray 属性 1.ndarray 属性 数组名 = np.a ...

  2. numpy库:常用基本

    转载自 http://www.cnblogs.com/smallpi/p/4550361.html侵删致歉 numpy 本文主要列出numpy模块常用方法  大部分内容来源于网络,而后经过自己的一点思 ...

  3. buffer转int python_Python学习教程第23天numpy库(上)

    点击蓝字 关注我们 numpy库的重要性 numpy库是进行数据处理时的必须库之一,大家都知道Python结合几个外加库进行数据处理,好用到与matlab say goodbye! numpy库的安装 ...

  4. python数学库的使用方法_浅谈numpy库的常用基本操作方法

    NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推.在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量.比如说,二维数组相当于是一个一维数 ...

  5. python numpy库安装-Python Numpy库安装与基本操作示例

    本文实例讲述了Python Numpy库安装与基本操作.分享给大家供大家参考,具体如下: 概述 NumPy(Numeric Python)扩展包提供了数组功能,以及对数据进行快速处理的函数. NumP ...

  6. python怎么安装numpy库-python怎么安装numpy库

    NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库. Python官网上的发行版是不包含Num ...

  7. numpy库中ndarray切片操作的参数意义

    ndarray切片操作的规则总结出来叫做"三帽号规则" 三帽号规则即:[开始索引:结尾索引:步长],并且切片区间是左闭右开的,即"开始索引:结尾索引"表示的区间 ...

  8. Panda和numpy库和matplotlib库的安装

    好久没有用python了 论文决定使用python 朴素贝叶斯和逻辑斯蒂 手生....连cmd命令都快忘记了 所以来重新复习一遍:cd C: 也就是在cmd中,可以敲打cd加上盘符的冒号就可以切换, ...

  9. 【Python】Numpy库之符号函数sign()的介绍及用法

    1.sign()函数功能介绍 sign()是Python的Numpy中的取数字符号(数字前的正负号)的函数. 2.sign()函数用法代码演示 #导入numpy库 import numpy as np ...

最新文章

  1. Java配置多数据源access,java联接MS ACCESS,无需配置数据源
  2. 用Java分割大型XML文件
  3. React开发(122):动态表头核心配置 外层绑定key
  4. android 线程池 怎么用,android中的线程池 怎么用
  5. linux下mysql启动和关闭
  6. vue项目中遇到的问题总结
  7. 实战:基于Node的控制台记事本开发
  8. 创设Excel服务失败
  9. 全国计算机高新技术模块,全国计算机信息高新技术考试模块总表.doc
  10. mysql 时间语句,mysql语句大全_mysql时间查询常用语句大全
  11. C与C++中的符号隐藏
  12. mysql全称量词_MySQL操作记录的方法集合,供以后查看
  13. win环境安装October CMS
  14. 前端职业规划 - 写给年轻的前端韭菜们
  15. 自己动手写CPU之第九阶段(2)——加载存储指令说明2(lwl、lwr)
  16. Building fresh packages...
  17. 基于Ernie-3.0 CAIL2019法研杯要素识别多标签分类任务
  18. 【GDOI2018模拟7.7】暴力大神hxx 树形dp
  19. Nmap Network Scanning扫描版
  20. Python基础 实例

热门文章

  1. IDEA安装actiBPM插件
  2. 凯迪仕、德施曼、华为斗法,智能门锁勇闯安全关
  3. 《Linux就该这么学》培训笔记_ch03_管道符、重定向与环境变量
  4. Js特殊字符转义之htmlEscape()方法
  5. IDEA自动生成方法和文件注释(实用)
  6. 云炬金融每日一题20210917
  7. Mock和Spy的区别 打桩的区别
  8. Kubernetes(k8s)DNS(CoreDNS)介绍
  9. 实验室离心机上用适配器50ml尖圆底离心管转换
  10. 深富策略:大盘连续上行 周期股领涨