简介

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的更多相关文章

  1. OpenCV 学习笔记 02 使用opencv处理图像

    1 不同色彩空间的转换 opencv 中有数百种关于不同色彩空间的转换方法,但常用的有三种色彩空间:灰度.BRG.HSV(Hue-Saturation-Value) 灰度 - 灰度色彩空间是通过去除彩 ...

  2. 软件测试之loadrunner学习笔记-02集合点

    loadrunner学习笔记-02集合点 集合点函数可以帮助我们生成有效可控的并发操作.虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行 ...

  3. NumPy学习笔记 三 股票价格

    NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...

  4. NumPy学习笔记 二

    NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...

  5. NumPy学习笔记 一

    NumPy学习笔记 一 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...

  6. numpy 学习笔记

    numpy 学习笔记 导入 numpy 包 import numpy as np 声明 ndarray 的几种方法 方法一,从list中创建 l = [[1,2,3], [4,5,6], [7,8,9 ...

  7. 机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN)

    机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN) 关键字:邻近算法(kNN: k Nearest Neighbors).python.源 ...

  8. Numpy学习笔记(下篇)

    目录 Numpy学习笔记(下篇) 一.Numpy数组的合并与分割操作 1.合并操作 2.分割操作 二.Numpy中的矩阵运算 1.Universal Function 2.矩阵运算 3.向量和矩阵运算 ...

  9. Numpy学习笔记(上篇)

    目录 Numpy学习笔记(上篇) 一.Jupyter Notebook的基本使用 二.Jpuyter Notebook的魔法命令 1.%run 2.%timeit & %%timeit 3.% ...

随机推荐

  1. zabbix使用自带模板监控MySQL

    监控mysql不能直接使用zabbix自带模板,还需要到被监控的mysql客户端做配置. 1.在zabbix   web配置步骤如下图: 2.配置完之后去看mysql主机监控项的时候看到mysql的监 ...

  2. linux目录结构知识

    1.系统目录结构介绍 1.目录结构特点 linux系统中的目录一切从根开始. Linux系统中的目录结构拥有层次. Linux系统中的目录需要挂载使用. 2.目录挂载初识 挂载的命令:mount mo ...

  3. React 日常记录

    以下是学习重点 原文地址 浏览器环境 JS解析和执行.绘制.事件处理.静态资源加载和处理 GUI渲染线程和Javascript线程 调度策略 先到先得(FCFS) 对短进程不利 对I/O密集不利 单处 ...

  4. 苞米面 C++ 模板库 介绍

    苞米面 C++ 模板库 简介 苞米面 C++ 模板库,无需编译,直接包含头文件就可以. 所有模板类和算法都包含在 bmm 名字空间里,例如: bmm::recent. 需要 C++ 编译器,支持 C+ ...

  5. [DEBUG] QAT Nginx for docker 部署时"--with-ld-opt"出错

    layout: post title: [DEBUG] QAT Nginx for docker 部署时"--with-ld-opt"出错 subtitle: 记一次debug经历 ...

  6. 个人&博客信息

                博客配置 服务器:无 配置链接:在博客园中安装皮肤 皮肤:GEEK by GUANGZAN           个人简介 本蒟蒻是广东中山人 如果您有一些问题,请发送邮件至mo ...

  7. .NET性能优化-使用ValueStringBuilder拼接字符串

    前言 这一次要和大家分享的一个Tips是在字符串拼接场景使用的,我们经常会遇到有很多短小的字符串需要拼接的场景,在这种场景下及其的不推荐使用String.Concat也就是使用+=运算符. 目前来说官 ...

  8. 前后端分离,SpringBoot如何实现验证码操作

    验证码的功能是防止非法用户恶意去访问登录接口而设置的一个功能,今天我们就来看看在前后端分离的项目中,SpringBoot是如何提供服务的. SpringBoot版本 本文基于的Spring Boot的 ...

  9. 2021春季学期华清大学EE数算OJ3:岩石的重量

    原题目如下: 看起来,这不过是我们在<程序设计基础>里面接触过的简单动态规划问题(什么,你不知道什么叫动态规划? 什么是动态规划? 百度百科对"动态规划"一词定义如下: ...

  10. 【ASP.NET Core】URL重写

    今天老周和大伙伴们聊聊有关 Url Rewrite 的事情,翻译过来就是 URL 重写. 这里不得不提一下,URL重定向与重写的不同. 1.URL重定向是客户端(通常是浏览器)向服务器请求地址A,然后 ...