导包

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常用知识汇总相关推荐

  1. python命令大全下载-Python pip 常用命令汇总

    使用了这么就pip命令,但是一直是简单使用,很多命令都是用了查,查了用,今天把常用的命令汇总一下,方便使用. 命令: pip 由上图可以看到 pip 支持一下命令 Commands: install ...

  2. python常用命令大全-Python pip 常用命令汇总

    使用了这么就pip命令,但是一直是简单使用,很多命令都是用了查,查了用,今天把常用的命令汇总一下,方便使用. 命令: pip 由上图可以看到 pip 支持一下命令 Commands: install ...

  3. python numpy常用操作、Numpy 多维数组、矩阵相乘、矩阵乘以向量

    python numpy常用操作 Numpy基本操作 # 导入numpy import numpy as np # 生成numpy数组 x = np.array([1.0, 2.0, 3.0]) pr ...

  4. html超链接样式顺序,CSS页面布局常用知识汇总(超链接样式)

    CSS中的知识非常多,我们不可能全都记得住.闲暇时整理了一些CSS页面布局的常用知识,这篇文章就和大家分享一下CSS超链接样式的常用知识.需要的朋友可以参考一下,希望可以帮助到你. 设计网页时,我们可 ...

  5. Python numpy基础知识

    1.基础知识 NumPy的主要对象是多维数组.它是由相同元素(通常是数字)组成的,通过正整数元组(tuple)作为索引的表格. 在数组中,纬度(dimensional)被称为轴(axis),轴的数量被 ...

  6. step2 . day2 Linux基础命令和常用知识汇总

    整理了一下,这个阶段虽然也算嵌入式学习,但是总归是Linux系统知识,这个文件夹是为RHCE考试而准备的知识点整理文件夹,正好也把学过的知识做了一个出版整理,放到里面. 从明天开始,要开始shell脚 ...

  7. python 基础学习-知识汇总

    文章目录 python 变量 字符串 列表 元组 字典 正则表达式 \W*和\W+匹配 try/except try/finally `self` `__init__()` `__class__.__ ...

  8. Python最常用库汇总

    一.数据处理 1. 数据分析:Numpy, Pandas, SciPy 2. 数据可视化:Matplotlib, Seaborn, Mayavi (3D) 3. 文本处理:PyPDF2, NLTK, ...

  9. python100个必背知识-python学习必备知识汇总

    一.变量 1.变量 •指在程序执行过程中,可变的量: •定义一个变量,就会伴随有3个特征,分别是内存ID.数据类型和变量值. •其他语言运行完之前,一定要手动把程序的内存空间释放掉.但python解释 ...

  10. python必背入门代码-python学习必备知识汇总

    一.变量 1.变量 •指在程序执行过程中,可变的量: •定义一个变量,就会伴随有3个特征,分别是内存ID.数据类型和变量值. •其他语言运行完之前,一定要手动把程序的内存空间释放掉.但python解释 ...

最新文章

  1. 网站性能优化思维导图
  2. c++中文件应用的一点小变化
  3. 为什么传值时加号变成了空格_为什么中英文字间距不一样?我想谈谈我的理解...
  4. Python学习笔记--函数
  5. jMeter parallel controller 无法使用 CSV Data config 提供的变量?
  6. android 闪屏页处理_Android应用闪屏页延迟跳转的三种写法
  7. 大型网站限流算法的实现和改造
  8. 解决苹果手机返回不刷新问题
  9. 死磕 java同步系列之AQS起篇
  10. matlab 万年历,转 计算万年历的Matlab程序
  11. 医学图像填洞处理-image fill holes
  12. react-router使用总结
  13. linux下运行vasp,VASP5.3.5 并行版本+VTST从头编译教程(完整版)
  14. MySQL:explain结果中Extra:Impossible WHERE noticed after reading const tables
  15. iOS和安卓的base64
  16. 四川多多开店:拼多多如何获取好的评价
  17. プログラム・ライブラリ
  18. sql中向下取整怎么取_SQL中的取整函数、取小数
  19. docker内创建文件夹失败
  20. PMP 项目管理 考前专题(04)考试 答题原则与套路总结

热门文章

  1. VM虚拟机的安装及安装操作系统
  2. 戴尔服务器重装系统优盘启动不了怎么办,戴尔电脑重装系统识别不了u盘怎么办...
  3. OpenG绘图方式比较
  4. 计算机专业拼音怎样写,单板计算机拼音
  5. 向日葵远程控制连接服务器黑屏原因
  6. csgo fps不稳定和服务器,win10玩csgofps不稳定怎么办
  7. WPS 二维表格匹配方式(利用VLOOKUP+IF/SWITCH多条件查询)
  8. UWB定位系统部署原则
  9. python实现GIF,PNG,JPG图片转换报错解决
  10. Windows安全中心功能介绍