Numpy使用简介

news2025/1/13 15:46:40

Numpy 相关题目
【Python】—— Numpy 初体验
【Python】—— NumPy基础及取值操作


      Numpy是基于Python的通用数值计算工具包,其内包含大量数学计算函数和矩阵运算函数。多数科学计算工具包,比如Scipy,和数值分析工具包,比如Pandas、Scikit-learn,都依赖Numpy。利用Numpy,能够高效地对一维数组、矩阵或更高维度的多维数组进行运算,性能比使用Python列表的性能高得多。

      Numpy的核心数据结构是ndarray多维数组。本文介绍ndarray多维数组的基本操作。

      我们将使用Jupyter Notebook来编写和运行代码。这些代码涉及ndarray多维数组的基本操作。首先,我们要做以下准备工作:
(1) 启动Jupyter Notebook。
(2) 单击进入一个文件夹(比如选择Desktop文件夹)。
(3) 新建一份交互式文档。
(4) 把文档命名为“Numpy-codes”。
(5) 在第1个代码输入框内敲入“import numpy as np”这一行语句。这一语句的作用是引入numpy模块,并把模块名字简写为“np”。
(6) 运行第1个代码输入框的代码。

      Jupyter Notebook的使用详述了以上步骤的具体做法。完成以上6个步骤后,浏览器内的Notebook页面如图所示。
在这里插入图片描述

新建名为“Numpy-codes”的交互式文档

1. 创建ndarray多维数组

(1) 使用array函数创建

      在名为“Numpy-codes”的交互式文档(下面简称为Numpy-codes文档)的代码输入框内,敲入如下3行代码,而后按“Shift + Enter”组合键运行这3行代码。
在这里插入图片描述
      上述3行代码中,第2行代码是调用array函数创建一维数组scores_arr。第3行代码是打印scores_arr的值。这3行代码下面的一行,即“Out[2]: array([98, 88, 72, 65, 49])”,是输出内容。开头的“Out[2]:”是Jupyter Notebook提供的,Out是输出的意思,方括号内的数字2是运行序号,与“In [2]”内的数字2对应,这两个数字2都是指第2次运行。“Out[2]:”之后的内容,即“array([98, 88, 72, 65, 49])”第3行代码产生的输出内容。

      需要提醒的是,你的Notebook页面内,代码的运行序号可能和我的运行序号不一致。因为你可以反复多次运行同一个输入框内的代码。每运行一次,运行序号就会加1。

(2) 使用arange函数创建

      Numpy的arange函数与Python的range函数功能类似。在Numpy-codes文档的代码输入框内敲入以下2行代码,其运行结果如“Out[3]:”开头的一行所示。
在这里插入图片描述

      调用Numpy的reshape函数可以把一维数组转换成二维数组。在Numpy-codes文档的代码输入框内敲入以下2行代码,其运行结果如“Out[4]:”开头的两行所示。
在这里插入图片描述

      上述两行代码执行后,nd2是2行3列的矩阵。

(3) 使用randn函数创建

      调用Numpy的randn函数生成由随机数组成的多维数组。在Numpy-codes文档的代码输入框内敲入以下2行代码,其运行结果如“Out[6]:”开头的5行所示。第1行代码的作用是调用random子模块的randn函数生成5行4列的矩阵。矩阵元素是随机数。第2行代码的作用是打印该随机矩阵。这两行代码分开在两个输入框内敲入,而后依次运行。这样做与把这两行代码合并写在一个输入框内并运行的做法是等价的。
在这里插入图片描述

2. ndarry的属性

      Numpy的ndarray多维数组实质是一个对象。它有shape、dtype和ndim等属性。

      承接前面的代码,在Numpy-codes文档的代码输入框内敲入以下1行代码,其运行结果如“Out[8]:”开头的1行所示。这一行代码输出nd2矩阵的shape属性值,即“(2, 3)”,表明nd2是2行3列的矩阵。
在这里插入图片描述

      在新的输入框内敲入以下1行代码,其运行结果如“Out[9]:”开头的1行所示。这一行代码输出arr矩阵的dtype属性值,也就是元素的类型,即“float64”,表明是64位的浮点数类型。
在这里插入图片描述
      以下代码输出arr数组的ndim属性值。输出内容为2,表明arr数组是2维的。
在这里插入图片描述

3. 数组的元素级运算

      Numpy为数组运算和矩阵运算提供了方便好用的函数。下面举例说明部分元素级函数的用法。注意,以下代码承接上面的代码。也就是说,在运行上面的代码之后才能运行下面列出的代码。离开上面的代码,是不能单独运行下面的代码的。

      可以通过“矩阵 + 数值”、“矩阵 - 数值”、“矩阵 * 数值”或类似的写法对矩阵的每一个元素进行“+ 数值”、“- 数值”、“* 数值”的运算。例如以下代码使得每一个元素都乘以10。例如,nd2矩阵的第2行第3列是3,而nd2t10矩阵的第2行第3列是3*10=30。
在这里插入图片描述

      以下代码使得每一个元素都加上2。
在这里插入图片描述

      以下代码完成两个矩阵对应位置运算相加的运算。
在这里插入图片描述

      以下代码完成对矩阵每个元素求倒数的运算。
在这里插入图片描述

      以下代码判别nd2矩阵的每一个元素是否大于8,返回一个真假值组成的矩阵。

在这里插入图片描述

4. 访问数组元素

      对于多维数组,通过下标可以访问到数组元素。

      对于上面代码生成的nd2矩阵,以下代码访问到第2行第3列的元素。我们应该猜到,行号和列号都是从0开始的。
在这里插入图片描述

      访问数组元素也可以采用以下写法。两种写法等价。
在这里插入图片描述

      下面的代码的作用是得到矩阵的第2行。
在这里插入图片描述

      利用Python的切片操作,可以获取矩阵的某几行。下面的代码的作用是获取arr矩阵的第3, 4, 5行(行号分别是2, 3, 4)。arr矩阵的定义见前面的代码。
在这里插入图片描述

      下面的代码的作用是获取arr矩阵的第3, 4, 5行中前两列。
在这里插入图片描述

5. 统计运算

      Numpy提供了丰富的统计运算。下面举例说明部分统计运算。

      Numpy模块的sum函数能够计算数组元素的总和。

      下面的代码计算nd2矩阵的元素总和,把总和赋值给变量t。
在这里插入图片描述

      下面的代码计算nd2矩阵各行的总和,把结算结果赋值给变量t1。sum函数的第2个参数“axis=1”指明按行累加。
在这里插入图片描述

      下面的代码计算nd2矩阵各列的总和,把结算结果赋值给变量t0。sum函数的第2个参数“axis=0”指明按列累加。
在这里插入图片描述

      对于各种统计函数,也能以方法形式调用。例如,下面的代码是调用nd2的sum方法计算nd2矩阵的所有元素的总和,然后把总和赋值给变量t。
在这里插入图片描述

      多维数组的mean方法用于计算平均值。例如,下面的代码计算nd2所有元素的平均值,然后把平均值赋值给变量m。
在这里插入图片描述

      下面的代码按行求平均值。
在这里插入图片描述

      下面的代码按列求平均值。
在这里插入图片描述

      类似的统计函数还有求最大值函数max、求最小值函数min、求标准差函数std、求方差函数var等等。

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

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

相关文章

大学物理-实验篇(二)——用分光计测定三棱镜的折射率(光:特定频段电磁波、光线在介质界面折射、平行光与凸透镜)

目录 预备知识 光:特定频段电磁波 光线在介质界面折射 平行光与凸透镜 实验目的 实验仪器 实验原理 实验步骤 准备分光计 目镜调焦 刻度盘读数 测三棱镜顶角 测三棱镜最小偏向角 数据处理 预备知识 光:特定频段电磁波 光速:…

YOLOv8涨点改进:多层次特征融合(SDI),小目标涨点明显,| UNet v2,比UNet显存占用更少、参数更少

💡💡💡本文独家改进:多层次特征融合(SDI),能够显著提升不同尺度和小目标的识别率 如何引入到YOLOv8 1)替代原始的Concat; 💡💡💡Yolov8魔术师,独家首发创新(原创),适用于Yolov5、Yolov7、Yolov8等各个Yolo系列,专栏文章提供每一步步骤和源码,轻松带你…

H 指数,经典算法实战。

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…

Mac上使用phpstudy+vscode配置PHP开发环境

使用的工具: 1、系统版本 2、vs code code 3、phpstudy_pro 一、下载vs code code以及必要的插件 1、vs code下载 点击vs code官网下载 选择对应的版本,一般电脑会自动识别对应的版本,点击下载,然后傻瓜式安装! 2…

陶瓷碗口缺口检测-技术方案

项目背景 陶瓷碗出厂前需要做的质量检测工作包括对陶瓷碗是否有缺口的检测,利用图像处理技术也可以对陶瓷碗的缺口进行检测和定位。 技术方案 陶瓷碗口缺口检测包含如下五个步骤。首先通过CMOS相机获取陶瓷碗的图像,二值化处理后通过图像复原技术进行去…

1886_emacs_v29中的行号配置

Grey 全部学习内容汇总: GitHub - GreyZhang/editors_skills: Summary for some common editor skills I used. emacs 29中的行号显示配置 行号显示 行号显示是一个编辑器中很常见的功能,我觉得这个功能的需求度可能因人群或者个人习惯而不同。对于只…

果然程序员的世界不是 0 就是 1

在一场轰动全球的爱情故事中,OpenAI 的首席执行官、同时也是打破常规的浪漫英雄,奥特曼,与他的基友奥利弗穆尔赫林在夏威夷举行了一场迷人的婚礼。在奥特曼的岛屿别墅附近,这对低调却又令人羡慕的新人,在奥特曼的哥哥杰…

python 爬虫 生成markdown文档

本文介绍的案例为使用python爬取网页内容并生成markdown文档,首先需要确定你所需要爬取的框架结构,根据网页写出对应的爬取代码 1.分析总网页的结构 我选用的是redis.net.com/order/xxx.html (如:Redis Setnx 命令_只有在 key 不存在时设置 key 的值。…

win系统搭建Minecraft世界服务器,MC开服教程,小白开服教程

Windows系统搭建我的世界世界服务器,Minecraft开服教程,小白开服教程,MC 1.19.4版本服务器搭建教程。 此教程使用 Mohist 1.19.4 服务端,此服务端支持Forge模组和Bukkit/Spigot/Paper插件,如果需要开其他服务端也可参…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -投票帖子详情实现

锋哥原创的uniapp微信小程序投票系统实战: uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

使用 Jamf Pro 和 Okta 工作流程实现自动化苹果设备管理

Jamf的销售工程师Vincent Bonnin与Okta的产品经理Emily Wendell一起介绍了JNUC 2021的操作方法会议。它们涵盖了Okta工作流程(Okta Workflow),并在其中集成了Jamf Pro,构建了一些工作流程,并提供了几个用例。 Okta 工作…

【密码学】python密码学库pycryptodome

记录了一本几乎是10年前的书(python绝技–用python成为顶级黑客)中过时的内容 p20 UNIX口令破解机 里面提到了python标准库中自带的crypt库,经验证Python 3.12.1中并没有这个自带的库,密码学相关的库目前(2024.1.12&a…

Unity中URP下实现能量罩(外发光)

文章目录 前言一、实现菲涅尔效果1、求 N ⃗ \vec{N} N 2、求 V ⃗ \vec{V} V 3、得出菲涅尔效果4、得出菲涅尔相反效果5、增加菲涅尔颜色 二、能量罩 交接处高亮 和 外发光效果结合1、修改混合模式,使能量罩透明2、限制 0 ≤ H i g h L i g h t C o l o r ≤ 1 …

002 Golang-channel-practice

第二题: 创建一个生产器和接收器,再建立一个无缓冲的channel。生产器负责把数据放进管道里,接收器负责把管道里面的数据打印出来。这里我们开5个协程把数据打印出来。 直接上代码! package mainimport ("fmt" )func …

常见的硬件设计相关网站和资料

以下是一些常见的硬件设计相关网站和资料: Arduino官方网站:https://www.arduino.cc/ - Arduino是一款流行的开源硬件平台,官方网站提供了大量的教程、项目示例和文档,适合初学者和专业人士。 2. TI(德州仪器&#xf…

AI RAG应用的多种文档分块代码

在开发 RAG 应用程序时,重要的是要有一个完善的文档分块模式来攫取内容。虽然有很多库可以实现这一目标,但重要的是要了解这一过程的基本机制,因为它是 AI RAG 应用程序的基石。 欢迎关注公众号(NLP Research) 测试文档 在测试文档中,我们将使用亚马逊文档中的大型 PDF…

写一个简单的Java的Gui文本输入窗口,JFrame的简单使用

JFrame是指一个计算机语言-java的GUI程序的基本思路是以JFrame为基础,它是屏幕上window的对象,能够最大化、最小化、关闭。 Swing的三个基本构造块:标签、按钮和文本字段;但是需要个地方安放它们,并希望用户知道如何处理它们。JFrame 类就是解决这个问题的——它是一个容器…

Ubuntu 20.04 Intel RealSense D435i 相机标定教程

下载编译code_utils mkdir -p ~/imu_catkin_ws/src cd ~/imu_catkin_ws/src catkin_init_workspace source ~/imu_catkin_ws/devel/setup.bash git clone https://github.com/gaowenliang/code_utils.git cd .. catkin_make报错:sumpixel_test.cpp:2:10: fatal err…

芯课堂 | 固件升级方法及架构

本次介绍一种固件升级方法及架构。 所述方法通过运行引导加载程序,并基于引导加载程序,获取启动引导标志位; 在启动引导标志位为预设枚举标志位时,执行对应启动引导标志位的固件升级动作; 在启动引导标志位为非预设…

Windows下安装部署Redis

一、下载 地址:https://github.com/MSOpenTech/redis/releases Redis-x64-3.2.100.msi版的比较简单,下载之后直接下一步,下一步… 即可完成安装部署。 这里主要演示Redis-x64-3.2.100.zip的安装部署过程,将Redis-x64-3.2.100.z…