numpy学习笔记02
简介
numpy.array() 数组对象,可以表示普通的一维数组,或者二维矩阵,或者任意数据;并且它可以对数组中的数据进行非常高效的运算,如:数据统计、图像处理、线性代数等
numpy 之所以能运行这么快的原因是因为它底层是用C语言实现的目标代码,但对于需要运算的数据需要先将它们表示成numpy数组的形式,即向量化
numpy 的基本使用
首先导入库并去别名np:
import numpy as np
1.创建数组
1.1 创建指定初始化变量数组
np.array([1,2,3,4,5])
1.2 创建全零的 3行2列 的数组
np.zeros((3,2))
1.3 创建全为1的 2行4列 的数组
np.ones((2,4))
1.4 创建递增或递减数组
np.arange(3,7) #递增
np.arange(9,1,-1) #递减
1.5 返回介于某区间等间距分布的数
np.linspace(0,1,5)
#介于0-1之间等间距的5位数
1.6 生成一个随机的 2行4列 的数组
np.random.rand(2,4)
2.获取数组尺寸
a = np.zeros((3,2))
a.shape
3.获取数组随机的数组类型
默认数组类型为64位的浮点型(np.float64)
3.1 创建数组时指定其他数组类型
a = np.zeros((4,2), dtype=np.int32)
3.2 对现有的数组进行数据类型转换
a = np.zeros((2,4))
b = a.astype(int)
基本运算
1.相同尺寸的数组可以直接进行四则运算
1.1 将数组同位置的数进行加减乘除
a = np.array([1,2,3])
b = np.array([4,5,6])
print(a+b)
print(a/b)
1.2 将两个向量进行点乘运算
同位置的数相乘再相加
a = np.array([1,2,3])
b = np.array([4,5,6])
np.dot(a,b)
1.3 进行矩阵的乘法运算
等同于np.matmul()函数
a = np.array([[1,2],
[3,4]])
b = np.array([[2,0],
[0,2]])
print(a @ b)
1.4 对所有数一次求平方根
a = np.array([1,2,3])
np.sqrt(a)
1.5 进行三角函数运算
a = np.array([1,2,3])
np.sin(a)
np.cos(a)
1.6 进行对数或指数的运算
a = np.array([1,2,3])
np.log(a)
np.power(a,2)
1.7 数组云单独的一个数做运算
分别计算各个元素与这个数的加减乘除,产生一个同尺寸的新数组,即称为“广播”
a = np.array([1,2,3])
a*5
2.不用尺寸的数组进行运算
运算前,numpy 会将两个数组扩展至相同尺寸,然后再将相同位置的元素相加
3.一维数组返回数组中所需的值
3.1 返回数组中最小或最大的元素
a = np.array([1,2,3,4,5])
a.min()
a.max()
3.2 返回最小或最大元素所在的索引
a = np.array([1,2,3,4,5])
a.argmin()
a.argmax()
3.3 返回所有数据的总和
a = np.array([1,2,3,4,5])
a.sum()
3.4 返回数据的平均值
a = np.array([1,2,3,4,5])
a.mean()
np.median()
3.5 返回数据的方差和标准方差等
a = np.array([1,2,3,4,5])
a.var()
a.std()
4.对于多维数组
可以指定一个额外的参数axis
当axis=0时,它会将每一行中对应的数据相加,axis=0代表第一个维度,即为 行
a = np.array([[1,2,3,4,5],
[5,6,7,8,9]])
a.sum(axis=0)
当axis=1时,代表第二个维度, 即为 列
a = np.array([[1,2,3,4,5],
[5,6,7,8,9]])
a.sum(axis=1)
5.获取数组中的元素
5.1获取第一行第二列的元素
a = np.array([[1,2,3],
[4,5,6]])
a[0,1]
5.2 按条件筛选指定的元素
a = np.arange(10)
a[a<3] #返回a<3的元素
a[(a>3)&(a%2==0)] #返回a>3且是偶数的数
5.3 获取第一行一到二列的元素
a = np.array([[1,2,3],
[4,5,6]])
a[0,0:2]
5.4 获取第一行所有列的元素
a = np.array([[1,2,3],
[4,5,6]])
a[0, : ] 或 a[0]
5.5 每隔n个数取一个数
a = np.array([1,2,3,4,5,6,7,8,9])
a[0:9:n] #n可正可负
a[::-1] #将数组翻转
图片处理
pillow安装
pip install pillow
1.使用pillow这个库在Python中读取图片文件
from PIL import Image
im = Image.open('C:/Users/Lenovo/Desktop/02.jpg')
im.show()
2.将图片转为一个numpy数组
from PIL import Image
import numpy as np
im = Image.open('C:/Users/Lenovo/Desktop/02.jpg')
im = np.array(im)
print(im.shape)
---》(1000, 750, 3) 表示1000行,750列,有3个颜色分量
3.通过下标访问颜色分量
im[100,100]
4.单独提取出所有像素点的红色分量
im_r = im[:,:,0]
Image.fromarray(im_r).show()
5. 将两张图片按比例混合在一起
from PIL import Image
import numpy as np
im1 = np.array(Image.open('C:/Users/Lenovo/Desktop/02.jpg'))
im2 = np.array(Image.open('C:/Users/Lenovo/Desktop/01.jpg'))
im_blend = im1*0.4+im2*0.6
im_blend = im_blend.astype(np.uint8) #运算结果为浮点数
Image.fromarray(im_blend).show() #显示图片,将图片转换成整型数
6.利用跨度对图片进行降采样
im_downsample = im1[::10,::10,:]
im_downsample = im1[::10,::10,:]
print(im_downsample)
7.将图片进行翻转
im_flipped = im1[::-1,:,:] #上下翻转
im_flipped = im1[:,::-1,:] #左右翻转
Image.fromarray(im_flipped).show()
8.裁剪图片某一部分
im_cropped = im[40:540,400:900,:]
Image.fromarray(im_cropped).show()
numpy学习笔记02的更多相关文章
- OpenCV 学习笔记 02 使用opencv处理图像
1 不同色彩空间的转换 opencv 中有数百种关于不同色彩空间的转换方法,但常用的有三种色彩空间:灰度.BRG.HSV(Hue-Saturation-Value) 灰度 - 灰度色彩空间是通过去除彩 ...
- 软件测试之loadrunner学习笔记-02集合点
loadrunner学习笔记-02集合点 集合点函数可以帮助我们生成有效可控的并发操作.虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行 ...
- NumPy学习笔记 三 股票价格
NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...
- NumPy学习笔记 二
NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...
- NumPy学习笔记 一
NumPy学习笔记 一 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...
- numpy 学习笔记
numpy 学习笔记 导入 numpy 包 import numpy as np 声明 ndarray 的几种方法 方法一,从list中创建 l = [[1,2,3], [4,5,6], [7,8,9 ...
- 机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN)
机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN) 关键字:邻近算法(kNN: k Nearest Neighbors).python.源 ...
- Numpy学习笔记(下篇)
目录 Numpy学习笔记(下篇) 一.Numpy数组的合并与分割操作 1.合并操作 2.分割操作 二.Numpy中的矩阵运算 1.Universal Function 2.矩阵运算 3.向量和矩阵运算 ...
- Numpy学习笔记(上篇)
目录 Numpy学习笔记(上篇) 一.Jupyter Notebook的基本使用 二.Jpuyter Notebook的魔法命令 1.%run 2.%timeit & %%timeit 3.% ...
随机推荐
- vim 下几种比较省劲的方式(vi结合着用)
Vim的几种模式 正常模式:可以使用快捷键命令,或按:输入命令行. 插入模式:可以输入文本,在正常模式下,按i.a.o等都可以进入插入模式. 可视模式:正常模式下按v可以进入可视模式, 在可视模式下, ...
- MongoDB 支持地理空间数据存储
MongoDB 支持地理空间数据存储 官方文档 https://docs.mongodb.com/manual/geospatial-queries/ MongoDB 支持对于地理空间数据的查询操作. ...
- 新手小白入门C语言第二章:基本语法
1. 语句 C 语言的代码由一行行语句(statement)组成.语句就是程序执行的一个操作命令.C 语言规定,语句必须使用分号结尾,除非有明确规定可以不写分号. 如: int x = 1; 这就是一 ...
- Java语言学习day24--7月30日
###17创建子类对象过程的细节 * A 创建子类对象过程的细节 * 如果子类的构造方法第一行写了this调用了本类其他构造方法,那么super调用父类的语句还有吗? * 这时是没有的,因为this( ...
- LevelDB 学习笔记2:合并
LevelDB 学习笔记2:合并 部分图片来自 RocksDB 文档 Minor Compaction 将内存数据库刷到硬盘的过程称为 minor compaction 产出的 L0 层的 sstab ...
- 【虚拟机】VMware-VMware Tool安装
1.安装 在VMware Workstation主界面点击菜单"虚拟机".会弹出提示框,点击是. 保持网络状态,等待后台下载,下载后会出现一个压缩包(如果没有出现压缩包请点击这里查 ...
- STS快捷键
在类或者方法上方加注释:shift+alt+J
- Bugku练习题---Crypto---聪明的小羊
Bugku练习题---Crypto---聪明的小羊 flag:flag{6fde4163df05d900} 解题步骤: 1.观察题目,下载附件 2.根据题目描述,判断是栅栏密码,位移2位,白给题,上网 ...
- java基础4.20
1.是否可以从一个static方法内部发出对非static方法的调用? 不可以.因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时 ...
- SpringBoot整合MybatisPlus基本的增删改查,保姆级教程
概述 MybatisPlus是国产的第三方插件, 它封装了许多常用的CURDapi,免去了我们写mapper.xml的重复劳动,这里介绍了基本的整合SpringBoot和基础用法. 引入依赖 在项目中 ...