第六章. 图解数组计算模块Numpy—数据的相关概念和创建数组

news2024/11/16 8:43:45

第六章. 图解数组计算模块Numpy

6.1 数据的相关概念和创建数组

Numpy是Python数组计算,矩阵运算和科学计算的核心库,它的用途是以数组的形式对数据进行操作,由于Numpy是通过C语言实现的,所以运算速度比较快。

1. Numpy的功能:

  • 有一个强大的N维数组对象ndarray
  • 广播功能函数
  • 线性代数,傅里叶变换,随机数生成,图形操作能功能
  • 整合C/C++/Fortran代码的工具

2.数组的相关概念

1).一维数组:

  • 一维数组基本与python列表一样,区别在于数组切片针对的是原始数据
    在这里插入图片描述

2).二维数组:

  • 二维数组的本质是以数组作为数组元素,二维数组包括行和列,类似于表格形状,又称为矩阵
    在这里插入图片描述

3).三维数组:

  • 三维数组是指维数为三的数组结构,也称为矩阵列表,最常见的多维数组
    在这里插入图片描述

4).轴的概念:

  • 轴是Numpy模块中的axis,指定某个axis,就是沿着这个axis做相关的操作

3.创建简单的数组(numpy.array)

1).语法:

numpy.array(object,dtype=None,copy=True,order='K',subok=False,ndmin=0)

参数说明:
object:任何具有数据接口方法的对象
dtype:数据类型
copy:是否复制object对象,默认值True
order:元素在内存中的出现顺序,值为K(元素在内存中的出现顺序),A(原顺序),C(按行),F(按列)
subok:若值True,则将传递子类,否则返回基类,默认值为False
ndmin:指定生成数组的最小维数

2).示例:

·示例1:为数组指定数据类型

list = [1.1, 2.2, 3.7]
n1 = np.array(list, dtype=int)
n2 = np.array(list, dtype=float)

·示例2:数组的复制

n1 = np.array([1, 2, 3])
n2 = np.array(n1, copy=True)
n2[0] = 5
n2[1] = 4

·示例3:通过ndmin参数控制最小维数

list = [1, 2, 3]
n1 = np.array(list, ndmin=3)

4.不同方式创建数组

·创建指定维度和数据类型未初始化的数组

n1 = np.empty([2, 3], dtype=float)

·示例:创建指定维度,以0填充的数组

n1 = np.zeros([2, 3], dtype=float)

·示例:创建指定维度,以1填充的数组

n1 = np.ones([2, 3], dtype=int)

·示例:创建指定维度和数据类型,并填充指定值

n1 = np.full([3, 2], 6)

·示例:创建对角矩阵

n1=np.eye(4)

5.从数值范围创建数组

1).使用arange函数创建数组

arange函数同python内置的range函数相似,区别在于返回值,arange返回值是数组,range返回值是列表

·语法:

numpy.arange([start,],stop[,step,],dtype=None)

参数说明:
start:起始值,默认值为0
stop:终止值(不包含)
step:步长,默认值为1
dtype:数据类型,不设置为数据的输入类型

·示例:

n1 = np.arange(0, 10, 2, dtype=float)

2).使用linspace函数创建等差数列:

等差数列:如果一个数列从第二项起,每一项与前一项的差等于同一个常数

·语法:

numpy.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None)

参数说明:
start:序列的起始值
stop:序列的终止值,如果endpoint=True,该值包含在序列中
num:要生成等步长的样本数量,默认值为50
endpoint:决定有区间是开区间还是闭区间,endpoint=True,闭区间
retstep:生成的数组中是否显示间距,retstep=True,显示间距
dtype:数组的数据类型

·示例:

n1 = np.linspace(-5, 5, 5)

3).使用logspace函数创建等比数列:

等比数列:如果一个数列从第二项起,每一项与前一项的比值等于同一个常数

·语法:

numpy.logspace(start,stop,num=50,endpoint=True,base=10.0, dtype=None)

参数说明:
start:序列的起始值
stop:序列的终止值,如果endpoint=True,该值包含在序列中
num:要生成等步长的样本数量,默认值为50
endpoint:决定有区间是开区间还是闭区间,endpoint=True,闭区间
base:对数log的底数
dtype:数组的数据类型

·示例:

n1 = np.logspace(0, 9, 10, base=2, dtype=int)

6.生成随机数组

随机数组的生成主要使用Numpy中的random模块。

1).使用rand函数创建数组

rand函数用于生成(0,1)之间的随机数组,传入一个值随机生成一维数组,传入一对值随机生成二维数组。

·语法:

numpy.random.rand(d0,d0,d2,...,dn)

参数说明:
d0,d0,d2,…,dn:维度,整数,可以为0

·示例:

n1 = np.random.rand(5)  # 一维数组
n1 = np.random.rand(5, 2)  # 二维数组

2).使用randn函数创建数组

randn函数用于从正态分布中返回随机生成的数组

·语法:

numpy.random.randn(d0,d0,d2,...,dn)

参数说明:
d0,d0,d2,…,dn:维度,整数,可以为0

·示例:

n1 = np.random.randn(5)  # 一维数组
n1 = np.random.randn(5, 2)  # 一维数组

3).使用randint函数创建数组

randint函数用于生成一定范围内的随机数组,左闭右开,与np.arange函数类似。

·语法:

numpy.random.randint(low,high=None,size=None)

参数说明:
low:起始值,整数,当参数high不为空时,参数low<参数high,否则程序会出现错误
high:终止值,整数
size:数组维数,整数(表示一维数组),元组(表示多维数组),为空,返回一个整数

·示例:

n1 = np.random.randint(1, 10, 7)  # 随机生成[1,10)之间的7个整数
n1 = np.random.randint(1, 10)  # 随机生成[1,10)之间的一个整数(数组大小为空)
n1 = np.random.randint(10, size=(5, 2))  # 随机生成10以内的二维数组

4).使用normal函数创建数组

normal函数用于生成正态分布的随机数

·语法:

numpy.random.normal(loc,scale,size)

参数说明:
loc:正态分布的均值,对应正态分布的中心,loc=0:说明是一个以y轴为对称轴的正态分布
scale:正态分布的标准差,,对应正态分布的宽度,scale越大,正态分布曲线越矮胖,scale越小,正态分布曲线越高瘦
size:数组的维数
·示例:

n1 = np.random.normal(0, 0.1, 10)

7.从已有的数组中创建数组

1).使用asarray函数创建数组

asarray函数用于创建数组,与array函数类似

·语法:

numpy.asarray(a,dtype=None,order=None)

参数说明:
a:可以是列表,列表的元组,元组,元组的元组,元组的列表或多维数组
dtype:数组的数据类型
order:数据元素在内存中出现的顺序

·示例:

n1 = np.asarray([1.1, 3.3, 2.2], dtype=float)

2).使用frombuffer函数创建数组

Numpy中的ndarray数组对象不能像Python列表一样动态的改变其大小,因此在做数据采集时不是很方便。frombuff函数可实现动态数组,frombuff函数接受buffer输入参数,以流的形式将读入的数据转换为数组。

·语法:

numpy.frombuffer(buff,dtype=float,count=-1,offset=0)

参数说明:
buff:实现了__buffer__方法的对象
dtype:数组的数据类型
count:读取的数据数量。默认值为-1:读取全部数据
offset:读取的起始位置,默认值为0

·示例:

n1 = np.frombuffer(b'pycharm', dtype='S1')

注意:当buffer参数值为字符串时,Python3版本默认字符串是Unicode类型,需转换成Byte string类型,需要在原字符串前加 b

3).使用formiter函数创建数组

fromiter函数用于从可迭代对象中建立数组对象。

·语法:

numpy.fromiter(iter, dtype, count=-1)

参数说明:
iter:可迭代对象
dtype:数组的数据类型
count:读取的数据数量,默认值为-1:读取所有数据

·示例:

iter = (x ** 2 for x in range(5))
n1 = np.fromiter(iter=iter, dtype='int')

4).使用empty_like函数创建数组

用于创建一个与给定数组具有相同维度和数据类型且未初始化的数组。

·语法:

numpy.empty_like(prototype, dtype=None, order=None, subok=None, shape=None)

参数说明:
prototype:给定的数组
dtype:数组的数据类型
order:给定数组的内部布局,C(按行),F(按列), A (原顺序),K(数据元素在内存中出现的顺序)
subok:默认情况下返回基类数组,subok=True,返回子类

·示例:

n1 = np.empty_like([[1, 2], [3, 4], [5, 6]])

5).使用zeros_like函数创建数组

·语法:

numpy.zeros_like(a, dtype=None, order='K', subok=True, shape=None)

参数说明:
a:可以是列表,列表的元组,元组,元组的元组,元组的列表或多维数组
dtype:数组的数据类型
order:给定数组的内部布局,C(按行),F(按列), A (原顺序),K(数据元素在内存中出现的顺序)
subok:默认情况下返回基类数组,subok=True,返回子类

·示例:

n1 = np.zeros_like([[1, 2], [3, 4], [5, 6]], dtype=float)

6).使用ones_like函数创建数组

·语法:

numpy.ones_like(a, dtype=None, order='K', subok=True, shape=None)

参数说明:
a:可以是列表,列表的元组,元组,元组的元组,元组的列表或多维数组
dtype:数组的数据类型
order:给定数组的内部布局,C(按行),F(按列), A (原顺序),K(数据元素在内存中出现的顺序)
subok:默认情况下返回基类数组,subok=True,返回子类

·示例:

n1 = np.ones_like([[1, 2], [3, 4], [5, 6]], dtype=int)

7).使用full_like函数创建数组

·语法:

numpy.full_like(a, fill_value, dtype=None, order='K', subok=True, shape=None)

参数说明:
a:可以是列表,列表的元组,元组,元组的元组,元组的列表或多维数组
fill_value:填充值
dtype:数组的数据类型
order:给定数组的内部布局,C(按行),F(按列), A (原顺序),K(数据元素在内存中出现的顺序)
subok:默认情况下返回基类数组,subok=True,返回子类

·示例:

n1 = np.full_like([[1, 2], [3, 4], [5, 6]], fill_value=6)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/136843.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

技术贴 | SQL 编译与执行 -parser

前言SQL 编译与执行系列技术博客将按照以下顺序分别介绍整个 SQL 执行引擎。图一 SQL 编译与执行研读流程parser 部分&#xff0c;包括词法解析和语法解析。compile 部分&#xff0c;包括语义解析以及计划的构建。optimize 部分&#xff0c;包括计划的优化。exec 部分&#xff…

十四、TCP多线程、原子类AtomicInteger、日志、枚举

tcp多线程 tcp客户端 多线程收发代码 package com.heima.test2;import java.io.*; import java.net.Socket; import java.nio.charset.Charset; import java.util.Scanner;class ClientSend implements Runnable {Socket socket;Scanner sc new Scanner(System.in);public C…

2019年数维杯国际大学生数学建模B题无人机避障问题设计规划求解全过程文档及程序

2019年数维杯国际大学生数学建模 B题 无人机避障问题设计规划 问题重述&#xff1a; 任务1&#xff1a;假设无人机在飞行过程中不受风向、湿度等外界因素的影响&#xff0c;飞行速度和拍摄角度恒定&#xff0c;无人机对一定宽度的区域进行直线飞行模式航拍。执行此航拍的飞行…

SpringBoot(一): SpringBoot的创建和使用

Spring的创建和使用1. 什么是Spring&#xff1f;2. SpringBoot的优点3. SpringBoot项目的创建3.1 使用IDEA创建3.2 使用网页创建4. 项目目录介绍和运行4.1 目录介绍4.2 项目运行4.3 输出hello world4.4 约定大于配置1. 什么是Spring&#xff1f; Spring的诞生是为了简化Java程…

Spring-boot启动失败 Unregistering JMX-exposed beans on shutdown 异常处理

目录一、异常错误二、原因三、解决方法一、异常错误 Spring-boot启动Run时&#xff0c;出现 o.s.j.e.a.AnnotationMBeanExporter - Unregistering JMX-exposed beans on shutdown 错误 *************************** APPLICATION FAILED TO START Description: The Tomcat conn…

【小程序】包与数据共享

文章目录使用 npm 包Vant WeappAPI Promise化全局事件共享MobX分包分包概念使用分包独立分包分包预下载使用 npm 包 目前&#xff0c;小程序中已经支持使用 npm 安装第三方包&#xff0c;从而来提高小程序的开发效率。但是&#xff0c;在小程序中使用npm 包有如下 3 个限制&am…

【韩顺平Linux】学习笔记3

【韩顺平Linux】学习笔记3一、文件目录指令pwd指令 ls指令cd指令mkdir指令rmdir指令touch指令cp指令rm指令mv指令cat指令more指令less 指令echo指令 head指令tail指令> 指令 >>指令ln指令history指令二、时间日期指令三、查找指令四、压缩和解压一、文件目录指令 根目…

【前端】Vue项目:旅游App-(3)TabBar:点击active效果、点击路由跳转

文章目录目标代码与过程设置active主题颜色添加点击active效果点击路由跳转效果总代码修改或新增的文件common.cssindex.csstab-bar.vue目标 添加点击active效果实现点击路由跳转效果 上一篇TabBar搭建&#xff1a;【前端】Vue项目&#xff1a;旅游App-&#xff08;2&#xff…

LVGL学习笔记12 - 复选框CheckBox

目录 1. Parts 1.1 LV_PART_MAIN 1.2 LV_PART_INDICATOR 2. 状态 3. 样式 3.1 设置字符串颜色 3.2 设置点击框外框颜色 3.3 修改点击框弧度 3.4 修改字符串与点击框的间隔 4. 事件 复选框通过lv_checkbox_create创建。一个CheckBox由一个点击框加一个Label组成。 obj1 …

Minikube Mac 安装 使用

Minikube Mac 安装 使用 环境要求 硬件要求 至少 2核 CPUs2GB 以上内存20GB 以上磁盘空间网络环境容器或虚拟机, 例如: Docker, QEMU, Hyperkit, Hyper-V, KVM, Parallels, Podman, VirtualBox, or VMware Fusion/Workstation 本机环境 Mac Pro 10.13.6 Docker 18.09.1 …

半导体行业相关术语

目录 1.晶圆&#xff08;wafer&#xff09; 2. 自动化测试设备&#xff08;ATE Automatic Test Equipment&#xff09; 3.晶盒&#xff08;Cassette&#xff09; 4. 待测设备(DUT Device Under Test) 5. 探针接口板(PIB Prober Interface Board) 6. 设备接口板(DIB D…

干货 | web自动化总卡在文件上传和弹框处理上?

在有些场景中&#xff0c;需要上传文件&#xff0c;而 Selenium 无法定位到弹出的文件框&#xff0c;以及网页弹出的提醒。这些都是需要特殊的方式来处理。input 标签使用自动化上传&#xff0c;先定位到上传按钮&#xff0c;然后 send_keys 把路径作为值给传进去.如图所示&…

【计算机网络-物理层】通信基础

文章目录1 码元、速率、波特、带宽1.1 码元1.2 波特率1.3 比特率1.4 带宽1.5 相关例题2 奈氏准则、香农定理2.1 奈氏准则&#xff08;采样定理&#xff09;2.2 香农定理2.3 相关例题3 编码方式3.1 归零编码&#xff08;RZ&#xff09;3.2 非归零编码&#xff08;NRZ&#xff09…

【简单DP】[NOIP2007 普及组] 守望者的逃离

P1095 [NOIP2007 普及组] 守望者的逃离 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)题意&#xff1a;思路&#xff1a;独立做出来的一道DP&#xff01;一开始我去模拟过程找子问题&#xff0c;然后去找阶段是什么本来想的是以路程作为阶段&#xff0c;但是1e8数组开不下那么…

如何看待PyTorch 2.0?

作者&#xff5c;吴育昕 1 为什么是TorchDynamo Graph capture 把用户 Python 写的模型代码变成 graph&#xff0c;是一切编译的根基。而 PyTorch 在试了这么多方案之后似乎已经锁定 TorchDynamo 作为 graph capture 的未来方向了&#xff0c;所以写一点关于 TorchDynamo 的…

假如面试官问你Babel的原理该怎么回答

1. 什么是 Babel 简单地说&#xff0c;Babel 能够转译 ECMAScript 2015 的代码&#xff0c;使它在旧的浏览器或者环境中也能够运行。 // es2015 的 const 和 arrow function const add (a, b) > a b;// Babel 转译后 var add function add(a, b) {return a b; };Babel…

pwr | 谁说样本量计算是个老大难问题!?(二)(独立样本均值篇)

1写在前面 上次介绍了两组发生率的样本量计算方法&#xff0c;通过pwr包进行计算非常简单&#xff0c;可以有效地减少我们的工作量。&#x1f618; 有时候我们想比较两组之间的均值&#xff0c;如何计算样本量又一次成了老大难问题。&#x1f912; 本期我们还是基于pwr包&#…

【自学Java】Windows安装PyCharm IDE

Windows安装PyCharm IDE PyCharm下载 PyCharm下载地址 https://www.jetbrains.com/pycharm/PyCharm下载 打开上面的链接&#xff0c;打开 Python 的开发工具 PyCharm 的下载页面&#xff0c;如下图所示&#xff1a; 这里我们点击 Download&#xff0c;跳转到新的页面&#…

错过短视频,微博奔向新浪

以后新浪或许会被叫做“微博新浪”。 2022年12月23日晚&#xff0c;港股微博发布公告称&#xff0c;拟斥资15亿元收购新浪网技术有限公司100%股权。此举被外界解读为微博将反向收购新浪。 曾经&#xff0c;微博还是新浪移动互联网时代的“船票”。随着门户网站逐渐凋零&#…

基于ODX/OTX诊断的整车扫描

| ODX (Open Diagnostic data eXchange) 是基于XML语言、开放的诊断数据格式&#xff0c;用于车辆整个生命周期中诊断数据的交互。它一开始由ASAM提出并形成标准MCD-2D&#xff0c;后来以ODX2.2.0为基础形成了ISO标准——ISO 22901-1。 | OTX (Open Test sequence eXchange) …