「numpy」numpy初步、ndarray、创建数组

news2025/5/20 1:55:56

Numpy 初步、ndarray、创建数组

【目录】
一、numpy简介

Numpy(Numerical Python)是一个开源的Python科学计算库,用于快速处理任意维度的数组

Numpy支持常见的数组和矩阵操作。对于同样的数值计算任务,使用Numpy比直接使用Python要简洁的多。

Numpy使用ndarray对象来处理多维数组,该对象是一个快速而灵活的大数据容器。

二、ndarray介绍

NumPy provides an N-dimensional array type, the ndarray,
which describes a collection of “items” of the same type.

ndarray == n-dimensional array n维数组

2.1 为什么需要ndarray?

由于python对数据类型不敏感,及python的数据类型一般是Any。

这会导致原生python处理数据时会增加处理开销,类比C/C++中的链表。

处理统一数据类型的数据时,我们往往希望数据的存储及运算是有规律。

2.2 内存块风格

在这里插入图片描述

  • ndarray 就是C/C++中的数组,数据类型统一,存储空间地址连续
  • Python list 则是C/C++中的链表,数据类型不一定统一,寻址方式通过指针连接。
  • numpy内置了并行运算功能,当系统有多个核心时,做某种计算时,numpy会自动做并行计算
  • Numpy底层使用C语言编写,内部解除了GIL(全局解释器锁),其对数组的操作速度不受Python解释器的限制,其效率远高于纯Python代码。
三、ndarray 用法
3.1 ndarray 属性
属性名字解释
ndarray.shape数组的维度形状
ndarray.ndim数组的维数
ndarray.size数组中的元素数量
ndarray.itemsize一个数组元素的长度(字节)
ndarray.dtype数组元素的类型
3.2 ndarray的数据类型
a = np.zeros((3, 4), dtype='i2')	# dtype=int16

b = np.zeros((3, 4), dtype=bool)	# dtype=bool
名称描述简写
np.bool用一个字节存储的布尔类型(True或False)‘b’
np.int8一个字节大小,-128 至 127‘i’
np.int16整数,-32768 至 32767‘i2’
np.int32整数,-2^31 至 2^32 -1‘i4’
np.int64整数,-2^63 至 2^63 - 1‘i8’
np.uint8无符号整数,0 至 255‘u’
np.uint16无符号整数,0 至 65535‘u2’
np.uint32无符号整数,0 至 2^32 - 1‘u4’
np.uint64无符号整数,0 至 2^64 - 1‘u8’
np.float16半精度浮点数:16位,正负号1位,指数5位,精度10位‘f2’
np.float32单精度浮点数:32位,正负号1位,指数8位,精度23位‘f4’
np.float64双精度浮点数:64位,正负号1位,指数11位,精度52位‘f8’
np.complex64复数,分别用两个32位浮点数表示实部和虚部‘c8’
np.complex128复数,分别用两个64位浮点数表示实部和虚部‘c16’
np.object_python对象‘O’
np.string_字符串‘S’
np.unicode_unicode类型‘U’
  • 若不指定,整数默认int64,小数默认float64

四、ndarray 基本操作
4.1 生成数组的方法
  • np.zeros(shape, dtype)
  • np.ones(shape, dtype)
  • np.zeros_like(a, dtype)
  • np.ones_like(a, dtype)
  • a 为某一数组array或者列表的shape
zeros = np.zeros((3, 4), dtype=int)
"""
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
"""

4.2 从现有数组生成
  • np.array(object, dtype)
  • np.asarray(a, dtype)
  • asarray直接复制内存地址,与原有数组共用一个内存
a = np.array([[1,2,3],[4,5,6]])

# 从现有的数组当中创建
a1 = np.array(a)

# 相当于索引的形式,并没有真正的创建一个新的
a2 = np.asarray(a)

print(id(a))	# 2390986778320
print(id(a1))	# 2390986784464
print(id(a2))	# 2390986778320

4.3 生成固定范围的数组
  • np.linspace()
  • np.arrange()
  • np.logspace()
4.3.1 np.linspace(start, stop, num, endpoint, dtype)

创建等差数组 — 指定数据数量

  • 参数:
    • start: 序列的起始值
    • stop: 序列的终止值
    • num: 要生成的等间隔样例数量,默认为50
    • endpoint: 序列中是否包含stop值,默认为ture
# 生成等间隔的数组
np.linspace(0, 100, 11)

# 返回结果
array([  0.,  10.,  20.,  30.,  40.,  50.,  60.,  70.,  80.,  90., 100.])
4.3.2 np.arange(start, stop, step, dtype)

创建等差数组 — 指定步长

  • 参数
    • step: 步长,默认值为1
# 生成等差数组
np.arange(10, 50, 2)

# 返回结果
array([10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42,
       44, 46, 48])
4.3.3 np.logspace(start, stop, num, base, dtype)

创建等比数组 — 指定底数base

  • 参数:
    • num: 要生成的等比数列数量,默认为50
    • base: 生成底数为base的等比数组,默认底数是10
# 生成底数为3的等比数组
np.logspace(0, 2, 3, base=3, dtype=int)

# 返回结果
array([1 3 9])

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

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

相关文章

FFmpeg 编码和解码

文章目录 音频格式AACADIF音频数据交换格式ADTS音频数据传输流 音频解码音频编码 视频格式H264GOP图像组I帧,P帧,B帧H264压缩技术H264压缩级别H264视频级别H264码流结构SPSPPS 解码视频编码视频 音频格式 AAC AAC全称 Advanced Audio Coding&#xff0…

游戏引擎学习第67天

reviewing “apron”概念以更新区域 我们正在进行模拟区域的扩展工作,目标是通过增加一个更大的区域来支持更丰富的互动,尤其是那些可能超出摄像机视野的内容。现有的模拟区域包括摄像机能看到的区域和其周围的环境区域,但为了保证更高效的游…

3D线上艺术展:艺术与技术的完美融合

随着数字技术的飞速发展,未来的艺术展览正逐步迈向线上线下融合的新阶段。其中,3D线上展览以其独特的魅力,成为线下展览的延伸与拓展,为艺术爱好者们开辟了全新的观赏途径。 对于艺术家和策展人而言,3D线上展览不仅打…

Qt制作一个简单闹钟

增加testtospeech模块 QT core gui texttospeech 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> #include <QTimer> #include <QTime> #include <QMouseEvent> #include <QTextToSpeech>…

Java编程题_面向对象和常用API01_B级

Java编程题_面向对象和常用API01_B级 第1题 面向对象、异常、集合、IO 题干: 请编写程序&#xff0c;完成键盘录入学生信息&#xff0c;并计算总分将学生信息与总分一同写入文本文件 需求&#xff1a;键盘录入3个学生信息(姓名,语文成绩,数学成绩) 求出每个学生的总分 ,并…

tcpdump 网络数据包分析工具

简介 用简单的话来定义tcpdump&#xff0c;就是&#xff1a;dump the traffic on a network&#xff0c;根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的…

24个未授权访问漏洞详情

一、Redis未授权访问漏洞 第一步&#xff1a;进⼊vulhub⽬录使⽤以下命令启动靶机 进⼊⽬录&#xff1a;cd /vulhub-master/redis/4-unacc 启动&#xff1a;docker-compose up -d 检查&#xff1a;docker ps 第二步&#xff1a;在Kali上安装redis程序进⾏服务的链接 #安装r…

python3中条件判断语句:if 语句与if嵌套语句

一. 简介 本文开始学习 python3中条件判断语句。Python 条件语句是通过一条或多条语句的执行结果&#xff08;True 或者 False&#xff09;来决定执行的代码块。 二. python3中条件判断语句&#xff1a;if 语句与 if嵌套语句 1. if 语句 Python中if语句的一般形式如下所示&…

vue实现下拉多选、可搜索、全选功能

最后的效果就是树形的下拉多选&#xff0c;可选择任意一级选项&#xff0c;下拉框中有一个按钮可以实现全选&#xff0c;也支持搜索功能。 在mounted生命周期里面获取全部部门的数据&#xff0c;handleTree是讲接口返回的数据整理成树形结构&#xff0c;可以自行解决 <div c…

在 Unity 6 中为您的世界创建全局照明的新方法(三)

本文是Unity 6全局光照功能介绍系列中的最后一篇文章&#xff0c;在上篇文章中我们为大家介绍了关于使用沙漠绿洲场景创建实时光照的案例&#xff0c;在本文中我们将承接上篇文章继续为大家介绍如何使用Unity 6中的APV探针功能在URP管道中的另一个案例“花园场景”中创建实时光…

《计算机组成及汇编语言原理》阅读笔记:p116-p120

《计算机组成及汇编语言原理》学习第 7 天&#xff0c;p116-p120 总结&#xff0c;总计 5 页。 一、技术总结 1.CPU优化 (1)increase overall performance number 例如&#xff1a;16位电脑提升到32位电脑。 (2)multiprocessing One way to make computers more useful i…

Python的简单爬虫框架

爬虫为网络爬虫&#xff08;又称为网页蜘蛛&#xff0c;网络机器人&#xff0c;在FOAF社区中间&#xff0c;更经常的称为网页追逐者&#xff09;&#xff0c;是一种按照一定的规则&#xff0c;自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、…

优化站群SEO:使用苹果CMS泛目录插件实现泛目录页面刷新不变

优化站群SEO&#xff1a;使用苹果CMS泛目录插件实现泛目录页面刷新不变 在当今数字营销环境中&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;是提升网站流量和可见性的关键策略。苹果CMS作为一款灵活的内容管理系统&#xff0c;提供了丰富的插件功能&#xff0c;尤其是…

Spring Cloud由入门到精通

文章目录 1.初识微服务1.1. 单体架构1.2.分布式架构1.3.微服务1.4 微服务技术比对1.5.Spring Cloud1.6. 总结2.服务拆分和远程调用2.1.服务拆分原则2.2.服务拆分示例2.2.1.项目工程结构设计2.2.2.创建Maven项目工程2.3.实现远程调用案例2.3.1.案例需求:2.3.2. 注册 Rest Templ…

【RK3588 Linux 5.x 内核编程】-内核I2C子系统介绍

内核I2C子系统介绍 文章目录 内核I2C子系统介绍1、内核中的I2C子系统2、内核中的I2C驱动2.1 获取I2C适合器2.2 创建i2c_board_info与设备2.3 创建设备ID和I2C驱动2.4 数据传输2.4.1 发送数据2.4.2 读取数据3、I2C总线如何工作I2C 是一种用于双线接口的串行协议,用于连接低速设…

GPIO相关寄存器,点灯

目录 一.输入模式 1.浮空输入 2.上拉输入 3.下拉输入 4.模拟输入 二.输出模式 1.推挽输出 2.开漏输出 三.寄存器 1.寄存器的作用 2.功能与类型 3.控制某一引脚输出电压来点灯所需要控制的寄存器 1.打开对应时钟开关 2.端口模式寄存器 ---输出模式 3.输出类型寄存…

【基础篇】三、MySQL表结构的操作

文章目录 Ⅰ. 创建表1、语法2、创建表样例3、创建和其它表一样结构的表 Ⅱ. 查看表结构1、查看数据库中的表2、查看指定表的属性3、获取表的创建语句 Ⅲ. 删除表Ⅳ. 修改表结构1、向表中插入新的字段2、删除表中的字段3、修改表名4、修改字段属性 Ⅰ. 创建表 1、语法 create …

Ethernet 系列(12)-- 基础学习::SOME/IP

目录 1. SOME/IP简介&#xff1a; 1.1 什么是SOME/IP&#xff1a; 1.2 什么时候使用SOME/IP&#xff1a; 2. SOME/IP的特点&#xff1a; 2.1 序列化&#xff1a; 2.2 远程过程调用&#xff08;RPC&#xff09;: 2.3 服务发现&#xff1a; 2.4 发布/订阅&#xff1a; 2.5 UDP消息…

前端小案例——轮播图(HTML+CSS+JS, 附源码)

一、前言 实现功能&#xff1a; 显示多张图片&#xff0c;每张图片占据轮播图容器的一部分空间。实现向左和向右的切换按钮&#xff0c;可以点击按钮切换到上一张或下一张图片。在底部显示小圆点&#xff0c;表示当前显示的图片&#xff0c;点击小圆点可以跳转到对应的图片。…

vue封装弹窗元素拖动指令

项目开发过程中我们通常会遇到需要到一些弹窗鼠标可以随意拖动位置去放置&#xff0c;vue里面直接通过封装对应的指令即可&#xff0c;于是封装了一个出来&#xff0c;希望可以用到。 Vue.directive(draggable-dom, draggableDom); 组件节点添加对应指令就可以 v-draggable-…