python-numpy常用知识汇总
导包
import numpy as np
引入
假如我们想将列表中的每个元素增加1,但列表不支持这样的操作:
a=[1,2,3,4]
[i+1 for i in a]
want to get:[2, 3, 4, 5]
与另一个数相加,得到对应元素相加的结果:
a=[1,2,3,4]
b=[2,3,4,5]
[x+y for (x,y) in zip(a,b)]
want to get:[3,5,7,9]
这样的操作比较麻烦,而且在数据量特别大的时候会非常耗时间。
如果我们使用Numpy,就会变得特别简单
a=np.array([1,2,3,4,5])
print(a+1)
#[2 3 4 5 6]
b=np.array([2,3,4,5])
print(a+b)
#[ 4 6 8 10]
常用方法
产生数组array
生成数组
通过方法np.array(dtype=‘’)去生成数组
a=np.array([1,2,3,4,5])
dtype='object’时,可以各种类型都存在,但是不利于后续操作
生成全0或全1数组
a=np.zeros(5) #生成全0
a=np.ones(5,dtype='bool') #dtype设置数据类型
print(a)
#[ True True True True True]
np.zeros_like(array):生成与array结构相似的全0矩阵
np.ones_like(array):
fill方法
可以使用fill方法将数组设定为指定值
与列表不同,数组中要求所有元素的dtype是一样的,如果传入参数的类型与数组类型不一样,需要按照已有的类型进行转换。
a=np.array([1,2,3,4])
a.fill(2.5) ##传入的参数类型会按照原数组类型进行转换
a
#array([2, 2, 2, 2])
##使用fill方法将原数组类型改变
a=np.array([1,2,3,4])
a=a.astype('float')
a.fill(2.5)
a
#array([2.5, 2.5, 2.5, 2.5])
1.生成整数序列 arange
a=np.arange(1,10,2) ##arange(起点,终点,步长)
a
2.生成等差数列 linspace
a=np.linspace(1,19,10) ##linspace(起点,终点,个数),此处从1开始到19结束,生成10个元素
a
3.行向量和列向量
行向量 np.r_[0:10]
列向量 np.c_[0:10]
数组属性
1.查看类型
a=np.array([1,2,3,4])
type(a)
2.查看数据类型
a.dtype
3.查看形状,会返回一个元组,每个元素代表这一堆的元素数目
a=np.array([[1,2,4],[2,3,4]])
a.shape
#(2,3) 两行三列
4.查看数组里面元素的数目
a=np.array([[1,2,4],[2,3,4]])
a.size
5.查看数组维度
a.ndim
6.复制数组**(易错点)**
如果使用array1 = array2 这样的方式,意义为这两个指向同一块内存,所以当array1被修改时,array2也会被修改。
如果想让两个ndarray互不关联,需要采取array1 = array2.copy
7.修改数组的数据类型
array.astype()
多维数组
1.数组生成:
a=np.array([[1,2,3,4],[5,6,7,8]])
a
2.索引取值
a[1,3] #8
a[1] #array([5, 6, 7, 8])
a=np.array([[0,1,2,3,4,5],[10,11,12,13,14,15],[20,21,22,23,24,25],[30,31,32,33,34,35],[40,41,42,43,44,45],[50,51,52,53,54,55]])
a
#array([[ 0, 1, 2, 3, 4, 5],# [10, 11, 12, 13, 14, 15],# [20, 21, 22, 23, 24, 25],# [30, 31, 32, 33, 34, 35],# [40, 41, 42, 43, 44, 45],# [50, 51, 52, 53, 54, 55]])#取到第一行的第4和第5两个元素a[0,3:5]#得到最后两行的最后两列a[4:,4:] a[-2:,-2:]#得到第3列a[:,2]#例如:取出3,5行的奇数列a[2:5:2,::2]
转换类型
1.asarray函数
a=np.array([1,2,3])
np.asarray(a,dtype=float)
2.astype函数
##astype方法返回一个新数组
a=np.array([1,2,3])
a.astype(float)
排序
np.sort() :默认最后的一个轴
np.argsort():返回从小到大的排列在数组中的索引位置
np.searchsorted(array,values): 查看values在array中应该大小在哪个位置
np.lexsort([b,a]):先以a进行排序,a相同的话以b进行排序
array1 = np.array([[1, 2, 3],[7, 5, 3],[4, 8, 6]])
index = np.lexsort([-1*array1[:, 0], array1[:, 2]])#-1表示倒序
print(array1[index])
数学操作
np.sum(array,axis=)
多维数组
axis=0(第一个轴):表示对每列进行求和
axis=1(第二个轴):表示对每行进行求和
np.prod():相乘
np.mean():平均值
np.min()
np.max()
np.std():标准差
np.var():方差
np.cov():相关系数矩阵
np.clip(min,max):对数组进行限制,小于min的全变成min
np.round(array,decimals=):将数组元素四舍五入,decimals保留几位小数
运算
np.multiply(x,y):矩阵对应的位置相乘
np.dot(x,y):矩阵乘法
np.logical_and():逻辑与
np.logical_not()
随机模块
np.random.rand(low,high,size,dtype) ##生成的随机数
np.random.randn(low,high,size,dtype) ##生成的随机数,随机数服从标准正太分布
np.random.randint(low,high,size,dtype) ##生成随机整数
np.random.random_sample(size):##0-1之间随机取样
np.random.shuffle(array1):##洗牌
切片是引用类型
切片在内存中使用的是引用机制
引用机制意味着,Python并没有为b分配新的空间来存储它的值,而实让b指向了a所分配的内存空间,因此,改变b会改变a的值。
a=np.array([0,1,2,3,4])
b=a[2:4]
b
#array([2, 3])
b[0]=10
a
#array([ 0, 1, 10, 3, 4])
但是列表不是引用
花式索引
切片只能支撑连续或者等间隔的切片操作,要想实现任意位置的操作,需要使用花式索引
一维花式索引
花式索引需要指定索引位置
a=np.arange(0,100,10)
a
#array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90])
index=[1,2,-1,-2]#花式索引需要指定索引位置
a[index]
#array([10, 20, 90, 80])
还可以使用布尔数组来花式索引
a=np.arange(0,100,10)
a
#array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90])
mask=np.array([0,2,2,0,0,1,0,0,1,0],dtype=bool)
mask
a[mask]
#array([10, 20, 50, 80])
注意mask必须是布尔数组,长度必须和数组长度相等
二维花式索引
a=np.array([[0,1,2,3,4,5],[10,11,12,13,14,15],[20,21,22,23,24,25],[30,31,32,33,34,35],[40,41,42,43,44,45],[50,51,52,53,54,55]])
a
#array([[ 0, 1, 2, 3, 4, 5],
# [10, 11, 12, 13, 14, 15],
# [20, 21, 22, 23, 24, 25],
# [30, 31, 32, 33, 34, 35],
# [40, 41, 42, 43, 44, 45],
# [50, 51, 52, 53, 54, 55]])a[(0,1,2,3,4),(1,2,3,4,5)] ##两个括号相对位置的数分别为行标和列标
#array([ 1, 12, 23, 34, 45])#返回最后三行的1,3,5列
a[-3:,0:6:2] a[-3:,[0,2,4]]
array([[30, 32, 34],[40, 42, 44],[50, 52, 54]])mask=np.array([1,0,1,0,1,0],dtype=bool)
a[-3:,mask]
array([[30, 32, 34],[40, 42, 44],[50, 52, 54]])
where语句
where函数会返回所有非零元素的索引
a=np.array([1,2,3,4,5,6,7,8,9])
np.where(a>5)
#(array([5, 6, 7, 8], dtype=int64),)
np.where(a>5,1,0) #大于5用1,否则0
#array([0, 0, 0, 0, 0, 1, 1, 1, 1])
where返回的是索引,可以和数组一起用
a[np.where(a>5)]
#array([6, 7, 8, 9])
数组形状
通过np.shape(array)或者array.shape()去查看数组的形状
1.修改数组形状
array2.shape = (2, 3)array2 = array2.reshape(2,3)
2.新增一行或者一列
新增一行,array = array[np.newaxis, :]新增一列,array = array[:, np.newaxis]
3.转置矩阵
array1.transpose()array1.T
4.数组的连接
竖着连接
np.concatenate((array1, array3), axis=0)
np.vstack((a,b))
横着连接
np.concatenate((array1, array3), axis=1)
np.hstack((a,b))
把多维数组变成一维数组
np.flatten()或者np.ravel()
读写文件
1.读文件
np.loadtxt(‘file’,delimiter = ‘分隔符’,skiprows = n,usecols = ):通过这个方法直接读取文件内容
注意默认分隔符是空格,skiprows的参数n代表是跳过第几行,usecols表示使用哪几列
2.写文件
np.savetxt(‘file’,写的内容,fmt='%d %.2f ',delimiter=‘分隔符’)
3.以.npy的格式写文件
np.save(‘.npy’)
读取.npy的文件用np.load
多个矩阵以.npy格式保存 使用np.npz(‘.npz’,a=矩阵1,b=矩阵2)
python-numpy常用知识汇总相关推荐
- python命令大全下载-Python pip 常用命令汇总
使用了这么就pip命令,但是一直是简单使用,很多命令都是用了查,查了用,今天把常用的命令汇总一下,方便使用. 命令: pip 由上图可以看到 pip 支持一下命令 Commands: install ...
- python常用命令大全-Python pip 常用命令汇总
使用了这么就pip命令,但是一直是简单使用,很多命令都是用了查,查了用,今天把常用的命令汇总一下,方便使用. 命令: pip 由上图可以看到 pip 支持一下命令 Commands: install ...
- python numpy常用操作、Numpy 多维数组、矩阵相乘、矩阵乘以向量
python numpy常用操作 Numpy基本操作 # 导入numpy import numpy as np # 生成numpy数组 x = np.array([1.0, 2.0, 3.0]) pr ...
- html超链接样式顺序,CSS页面布局常用知识汇总(超链接样式)
CSS中的知识非常多,我们不可能全都记得住.闲暇时整理了一些CSS页面布局的常用知识,这篇文章就和大家分享一下CSS超链接样式的常用知识.需要的朋友可以参考一下,希望可以帮助到你. 设计网页时,我们可 ...
- Python numpy基础知识
1.基础知识 NumPy的主要对象是多维数组.它是由相同元素(通常是数字)组成的,通过正整数元组(tuple)作为索引的表格. 在数组中,纬度(dimensional)被称为轴(axis),轴的数量被 ...
- step2 . day2 Linux基础命令和常用知识汇总
整理了一下,这个阶段虽然也算嵌入式学习,但是总归是Linux系统知识,这个文件夹是为RHCE考试而准备的知识点整理文件夹,正好也把学过的知识做了一个出版整理,放到里面. 从明天开始,要开始shell脚 ...
- python 基础学习-知识汇总
文章目录 python 变量 字符串 列表 元组 字典 正则表达式 \W*和\W+匹配 try/except try/finally `self` `__init__()` `__class__.__ ...
- Python最常用库汇总
一.数据处理 1. 数据分析:Numpy, Pandas, SciPy 2. 数据可视化:Matplotlib, Seaborn, Mayavi (3D) 3. 文本处理:PyPDF2, NLTK, ...
- python100个必背知识-python学习必备知识汇总
一.变量 1.变量 •指在程序执行过程中,可变的量: •定义一个变量,就会伴随有3个特征,分别是内存ID.数据类型和变量值. •其他语言运行完之前,一定要手动把程序的内存空间释放掉.但python解释 ...
- python必背入门代码-python学习必备知识汇总
一.变量 1.变量 •指在程序执行过程中,可变的量: •定义一个变量,就会伴随有3个特征,分别是内存ID.数据类型和变量值. •其他语言运行完之前,一定要手动把程序的内存空间释放掉.但python解释 ...
最新文章
- 网站性能优化思维导图
- c++中文件应用的一点小变化
- 为什么传值时加号变成了空格_为什么中英文字间距不一样?我想谈谈我的理解...
- Python学习笔记--函数
- jMeter parallel controller 无法使用 CSV Data config 提供的变量?
- android 闪屏页处理_Android应用闪屏页延迟跳转的三种写法
- 大型网站限流算法的实现和改造
- 解决苹果手机返回不刷新问题
- 死磕 java同步系列之AQS起篇
- matlab 万年历,转 计算万年历的Matlab程序
- 医学图像填洞处理-image fill holes
- react-router使用总结
- linux下运行vasp,VASP5.3.5 并行版本+VTST从头编译教程(完整版)
- MySQL:explain结果中Extra:Impossible WHERE noticed after reading const tables
- iOS和安卓的base64
- 四川多多开店:拼多多如何获取好的评价
- プログラム・ライブラリ
- sql中向下取整怎么取_SQL中的取整函数、取小数
- docker内创建文件夹失败
- PMP 项目管理 考前专题(04)考试 答题原则与套路总结