当前位置: 首页 > news >正文

《Numpy 简易速速上手小册》第1章:Numpy 基础(2024 最新版)

在这里插入图片描述

文章目录

  • 1.1 创建和操作 Numpy 数组
    • 1.1.1 基础知识
    • 1.1.2 完整案例:多维数据分析
    • 1.1.3 拓展案例 1:时间序列数据
    • 1.1.4 拓展案例 2:图像数据处理
  • 1.2 数组的索引和切片
    • 1.2.1 基础知识
    • 1.2.2 完整案例:时间序列分析
    • 1.2.3 拓展案例 1:多维数据访问
    • 1.2.4 拓展案例 2:多条件筛选
  • 1.3 数学运算基础
    • 1.3.1 基础知识
    • 1.3.2 完整案例:数据标准化
    • 1.3.3 拓展案例 1:二维数组的运算
    • 1.3.4 拓展案例 2:矩阵运算

1.1 创建和操作 Numpy 数组

1.1.1 基础知识

欢迎踏入 Numpy 数组的世界!首先,让我们了解一下 Numpy 数组的基础。Numpy 数组,也称为 ndarray,是 Python 中用于存储和处理大型数据集的核心。它们比 Python 原生的列表更快、更强大。在 Numpy 中,我们主要处理同质数据类型,这就是 Numpy 高效的秘密之一。

数组可以有不同的维度:一维数组像列表,二维数组像矩阵,更高维度的数组在数据科学中也非常常见。创建数组最简单的方法是使用 np.array() 函数,并传递一个列表或列表的列表作为参数。

1.1.2 完整案例:多维数据分析

假设你是一名数据科学家,需要分析一组三维数据。我们的数据集是一个三维数组,每个维度代表一个不同的属性。

import numpy as np# 创建一个三维 Numpy 数组
data = np.array([[[1, 2, 3], [4, 5, 6], [7, 8, 9]],[[10, 11, 12], [13, 14, 15], [16, 17, 18]],[[19, 20, 21], [22, 23, 24], [25, 26, 27]]
])# 计算所有元素的总和
total_sum = data.sum()
print("Total Sum:", total_sum)# 计算第二维度的平均值
mean_dim2 = data.mean(axis=1)
print("Mean along the second dimension:\n", mean_dim2)

在这个案例中,我们首先创建了一个三维数组。接着,我们使用 sum() 方法计算了整个数组的总和,然后使用 mean() 方法沿着第二个维度(记住,维度是从 0 开始计数的)计算平均值。

1.1.3 拓展案例 1:时间序列数据

现在,假设你有一组时间序列数据,记录了一周每天的最高温度和最低温度。我们将使用 Numpy 来分析这些数据。

# 一周的最高温度和最低温度
temperatures = np.array([[30, 20],  # 周一[31, 21],  # 周二[32, 22],  # 周三[33, 23],  # 周四[34, 24],  # 周五[35, 25],  # 周六[36, 26]   # 周日
])# 计算每天的温差
daily_temp_range = temperatures[:, 0] - temperatures[:, 1]
print("Daily Temperature Range:", daily_temp_range)# 计算整周的平均最高温度
avg_high = temperatures[:, 0].mean()
print("Average High:", avg_high)

在这个案例中,我们创建了一个二维数组来存储一周的温度数据。然后,我们计算了每天的温差和整周的平均最高温度。

1.1.4 拓展案例 2:图像数据处理

最后,让我们看一个更高级的例子:图像数据处理。图像可以表示为三维 Numpy 数组,其中的维度分别代表高度、宽度和颜色通道。

# 假设我们有一个 64x64 像素的RGB图像
image = np.random.randint(0, 256, (64, 64, 3))# 将图像转换为灰度
gray_image = np.mean(image, axis=2)
print("Grayscale Image Shape:", gray_image.shape)

在这个案例中,我们模拟了一个 64x64 像素的 RGB 图像

(使用随机数生成)。每个像素有三个颜色通道(红色、绿色和蓝色)。我们通过计算三个颜色通道的平均值将图像转换为灰度。

这三个案例展示了 Numpy 数组在不同应用场景中的强大功能。从基础的数组操作到复杂的数据分析和图像处理,Numpy 都是处理和分析数据的有力工具。随着你的进一步探索,你将发现更多令人兴奋的使用方式!

在这里插入图片描述


1.2 数组的索引和切片

1.2.1 基础知识

在 Numpy 数组的世界里,索引和切片是获取和操作数据的核心技巧。就像在 Python 列表中一样,你可以通过索引访问数组中的特定元素。不过,Numpy 带来了更多的功能,特别是在处理多维数组时。

索引(Indexing):它允许你访问数组的单个元素。比如,array[2, 3] 会访问第三行第四列的元素(因为索引从0开始)。

切片(Slicing):它提供了获取数组子集的方法。切片使用冒号 : 符号,比如 array[1:4, 0:2] 将选取第二到第四行和第一到第二列的元素。

布尔索引(Boolean Indexing):这是一种高级索引方式,允许你根据条件选择数组中的元素。

1.2.2 完整案例:时间序列分析

假设你是一名数据分析师,需要从一组存储在 Numpy 数组中的时间序列数据中提取特定的信息。这组数据记录了一段时间内每天的股市开盘价。

import numpy as np# 10天的股市开盘价
stock_prices = np.array([120, 122, 121, 123, 124, 123, 125, 126, 127, 128])# 获取第五天的股价
day_5_price = stock_prices[4]
print("Day 5 price:", day_5_price)# 获取第三天到第七天的股价
week_prices = stock_prices[2:7]
print("Prices from day 3 to 7:", week_prices)# 假设我们想找出价格超过125的日子
high_price_days = stock_prices > 125
print("Days with price over 125:", stock_prices[high_price_days])

这个案例中,我们首先访问了特定的一天的股价,然后通过切片获取了一个时间段内的股价,最后使用了布尔索引来找出特定条件下的数据。

1.2.3 拓展案例 1:多维数据访问

让我们假设你现在有一个二维的数据集,表示的是一个班级中学生在不同科目的分数。

# 5名学生在3门科目上的分数
scores = np.array([[88, 92, 80],[87, 90, 78],[95, 85, 88],[90, 90, 92],[85, 87, 85]
])# 访问第三个学生的数学分数(第三列)
math_score_student_3 = scores[2, 2]
print("Math score of student 3:", math_score_student_3)# 获取前三个学生的英语和数学分数
english_math_scores = scores[0:3, 0:2]
print("English and Math scores of first three students:\n", english_math_scores)

在这个案例中,我们处理了一个二维数组,首先访问了特定学生的特定科目分数,然后通过切片获取了部分学生在两门科目上的分数。

1.2.4 拓展案例 2:多条件筛选

假设你在处理一组关于房地产的数据,需要根据多个条件筛选房源。

# 假设数组中的每行代表一处房产,列分别是:价格(万元)、面积(平方米)、卧室数量
properties = np.array([[300, 70, 2],[400, 80, 3],[500, 90, 3],[600, 100, 4],[700, 110, 4]
])# 找出价格小于600万且卧室数量不少于3的房产
affordable_properties = properties[(properties[:, 0] < 600) & (properties[:, 2] >= 3)]
print("Affordable properties:\n", affordable_properties)

在这个案例中,我们使用了布尔索引和逻辑运算符来实现多条件筛选。这种方式在处理复杂数据集时非常有用,可以帮助我们快速找到符合特定条件的数据子集。

通过这些案例,你可以看到 Numpy 在数组索引和切片方面的强大功能。无论是单条件还是多条件筛选,一维还是多维数组,Numpy 都为数据的获取和操作提供了灵活而强大的工具。随着你不断深入学习,你将能够解锁更多数据处理的秘密!

在这里插入图片描述


1.3 数学运算基础

1.3.1 基础知识

Numpy 为数值计算提供了一个强大且高效的平台。它支持各种数学运算,包括但不限于基本的算术运算、统计运算、线性代数运算等。在 Numpy 中,这些运算通常是元素级别的,意味着它们将对数组中的每个元素单独应用。

基本算术运算:包括加法(+)、减法(-)、乘法(*)和除法(/)。这些运算可以直接应用于数组。

统计运算:如求和(sum)、求平均值(mean)、最大值(max)和最小值(min)等,这些都是分析数据集时常用的运算。

线性代数运算:Numpy 支持多种线性代数运算,如矩阵乘法、矩阵转置、求逆等。

1.3.2 完整案例:数据标准化

数据标准化是数据预处理中的一个重要步骤。假设你有一组数值数据,你需要将其标准化,使均值为 0,标准差为 1。

import numpy as np# 假设有一组数据
data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])# 计算均值和标准差
mean = data.mean()
std = data.std()# 执行标准化
normalized_data = (data - mean) / std
print("Normalized Data:", normalized_data)

在这个例子中,我们首先计算了数据的均值和标准差,然后使用这些统计数据将原始数据标准化。

1.3.3 拓展案例 1:二维数组的运算

考虑一个场景,你需要处理一个二维数据集,比如一组学生的多门科目成绩,并计算每门科目的平均分。

# 5名学生的3门科目分数
scores = np.array([[70, 80, 90],[88, 78, 92],[85, 87, 91],[90, 91, 89],[95, 92, 88]
])# 计算每门科目的平均分
subject_means = scores.mean(axis=0)
print("Average scores per subject:", subject_means)

在这个案例中,我们计算了每门科目(每列)的平均分数,使用了 axis=0 来指定沿着行的方向(即跨列)进行运算。

1.3.4 拓展案例 2:矩阵运算

假设你在处理一些线性代数问题,需要计算矩阵的逆或执行矩阵乘法。

# 创建一个矩阵
A = np.array([[1, 2],[3, 4]
])# 计算矩阵的逆
A_inv = np.linalg.inv(A)
print("Inverse of Matrix A:\n", A_inv)# 创建另一个矩阵
B = np.array([[2, 0],[0, 2]
])# 执行矩阵乘法
product = np.dot(A, B)
print("Product of A and B:\n", product)

这个案例展示了如何计算一个矩阵的逆,以及如何执行两个矩阵之间的乘法。这些操作在科学和工程计算中非常重要。

通过这些案例,你可以看到 Numpy 在数学运算方面的能力。从简单的数组操作到复杂的线性代数问题,Numpy 都能提供高效且易于使用的解决方案。掌握了这些基础知识后,你就可以在更复杂的数据分析和科学计算任务中运用这些技能了。

相关文章:

《Numpy 简易速速上手小册》第1章:Numpy 基础(2024 最新版)

文章目录 1.1 创建和操作 Numpy 数组1.1.1 基础知识1.1.2 完整案例&#xff1a;多维数据分析1.1.3 拓展案例 1&#xff1a;时间序列数据1.1.4 拓展案例 2&#xff1a;图像数据处理 1.2 数组的索引和切片1.2.1 基础知识1.2.2 完整案例&#xff1a;时间序列分析1.2.3 拓展案例 1&…...

【美团】SaaS技术部-后端研发工程师(海外业务)

部门介绍 美团餐饮系统为餐饮企业提供一站式IT解决方案&#xff0c;帮助餐饮商户实现从供应链管理、生产管理、前厅管理到外卖的数字化经营。美团餐饮系统不仅打通了餐厅和平台&#xff0c;更帮助餐厅连接客人&#xff0c;让商户更了解顾客需求&#xff0c;在帮助商户做商业决…...

linux安装mongodb数据库启动报错? 都是冰红茶滴水儿

先展示报错信息 网上一大推说是关闭不正确导致的,然后给出的解决方法是 ./mongod -f mongodb.conf --repair吊用没有,还是报错: about to fork child process, waiting until server is ready for connections. forked process: 302226 ERROR: child process failed, exited…...

win11安装wsl作为linux子系统并当作服务器

wsl安装 打开控制面板&#xff0c;找到启用或关闭windows功能 开启windows虚拟机监控平台和适用于Linux的Windows子系统&#xff0c;重启电脑。 打开microsoft store搜索ubuntu&#xff0c;找到合适的版本下载安装 输入wsl -l如下所示&#xff0c;即为安装成功。 安装过程比较…...

户用光伏电站的管理包括哪些内容?需要怎么做?

户用光伏电站在运行后需要进行一系列的管理工作&#xff0c;包括安全、运行、质量和数据等等&#xff0c;从而保证电站的安全、经济、高效运行。 1.安全管理 光伏电站的安全管理是非常重要的&#xff0c;包括电站的防雷、防火、防盗等措施&#xff0c;以及电站内部的安全管理…...

Kafka-服务端-PartitionLeaderSelector、ReplicaStateMachine

PartitionLeaderSelector 通过对前面的分析可知&#xff0c;PartitionMachine将Leader副本选举、确定ISR集合的工作委托给了PartitionLeaderSelector接口实现&#xff0c;PartitionMachine可以专注于管理分区状态。这是策略模式的一种典型的应用场景。 图展示了PartitionLead…...

总结11(数组)

数组 1.为什么需要数组 为了解决大量同类型数据的存储和使用问题 为了模拟现实世界 2. 数组的分类 一维数组 1&#xff09;.怎样定义一维数组 为n个变量连续分配存储空间。 所有的变量数据类型必须相同。 所有变量所占的字节大小必须相等。 例子&#xff1a; int a[5]; &#x…...

扩展学习|大数据分析整合到价值创造的大见解

文献来源:Saggi M K, Jain S. A survey towards an integration of big data analytics to big insights for value-creation[J]. Information Processing & Management, 2018, 54(5): 758-790. 下载链接:链接:https://pan.baidu.com/s/14IGaCOc-plxAiaVhwOgUvA 提取码…...

蓝桥杯---牌型种数

小明被劫持到X赌城&#xff0c;被迫与其他3人玩牌。一副扑克牌(去掉大小王牌,共52张)&#xff0c;均匀发给4个人&#xff0c;每个人13张。这时&#xff0c;小明脑子里突然冒出一个问题&#xff1a;如果不考虑花色&#xff0c;只考虑点数&#xff0c;也不考虑自己得到的牌的先后…...

【Linux】VMware Workstation16安装银河麒麟高级服务器操作系统V10 SP3 AMD64

目录 一、麒麟服务器概述 二、安装步骤 设置硬盘大小 完成配置 修改内存 处理器等设备配置 选择直接安装 配置磁盘 网络配置 设置root账号密码 开始安装 启动完成 一、麒麟服务器概述 银河麒麟高级服务器操作系统V10是针对企业级关键业务&#xff0c;适应虚拟化、云…...

中国的茶文化:历史、传统与生活

中国的茶文化&#xff1a;历史、传统与生活 一、引言 茶&#xff0c;这一神奇而古老的饮品&#xff0c;与中国的历史、文化和生活方式紧密相连。中国的茶文化&#xff0c;源远流长&#xff0c;博大精深&#xff0c;是中华文明的重要组成部分。它不仅是一种饮料&#xff0c;更是…...

Oracle函数使用

ROW_NUMBER函数 ROW_NUMBER() OVER(PARTITION BY column1 ORDER BY column2 DESC) -- 根据column1分组按column2降序排序生成序号&#xff0c;序号由小到大,会生成一个唯一的序号 -- 例如column2中有两列值都为1,那他们的序号会有一个在上一个在下ROW_NUMBER() OVER(ORDER BY …...

正则表达式与文本三剑客

目录 一、正则表达式 1. 定义 2. 字符匹配 3. 重复限定符 4. 位置锚点 5. 分组和引用 6. 扩展正则表达式 二、文本三剑客 1. grep 1.1 定义 1.2 语法 1.3 选项 1.4 示例 2. sed 2.1 定义 2.2 通式 2.3 选项 2.4 脚本格式&#xff08;脚本语法&#xff09; 2.…...

C语言中的数组操作技巧:提升程序的效率和可读性

1. 概念 数组是C语言中常见且重要的数据结构&#xff0c;在许多应用中都被广泛使用。合理地处理数组操作可以提高程序的效率和可读性。本文将介绍C语言中常用的数组操作方法和技巧&#xff0c;帮助读者优化数组操作并提升程序效果。 2.常用的数组操作方法 2.1 数组的初始化 C…...

202 快乐数

编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1&#xff0c…...

html css javascript写一个扫雷

文章目录 一、html css javascript写一个扫雷二、JavaScript三、HTML四、CSS五、热门文章 一、html css javascript写一个扫雷 一个简单的使用HTML、CSS和JavaScript编写的扫雷游戏的示例代码&#xff1a; <!DOCTYPE html> <html> <head><title>扫雷…...

Unity3D正则表达式的使用

系列文章目录 unity工具 文章目录 系列文章目录前言一、匹配正整数的使用方法1-1、代码如下1-2、结果如下 二、匹配大写字母2-1、代码如下1-2、结果如下 三、Regex类3-1、Match&#xff08;&#xff09;3-2、Matches()3-3、IsMatch&#xff08;&#xff09; 四、定义正则表达式…...

SpringBoot,TDengine时序数据库,实现物联网,车联网大批量数据更新最佳实践。

简介 TDengine 是一款专为物联网、工业互联网等场景设计并优化的大数据平台&#xff0c;它能安全高效地将大量设备、数据采集器每天产生的高达 TB 甚至 PB 级的数据进行汇聚、存储、分析和分发&#xff0c;对业务运行状态进行实时监测、预警&#xff0c;提供实时的商业洞察。其…...

【CSS】常见

一. 溢出隐藏 1.1 单行文本溢出 .content{max-width:200px; /* 定义容器最大宽度 */overflow:hidden; /* 隐藏溢出的内容 */text-overflow:ellipsis; /* 溢出部分...表示 */white-space: nowrap; /* 确保文本在一行内显示 */ }问题&#xff1a;display:flex 和 ellipsis 冲…...

Django实战

一、开发登录表单 def login_form(request):html <html><body><form method"post">用户名:<input name "username" type"text"></input></br>密码&#xff1a;<input name "password" type…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号&#xff08;第三种&#xff09;后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作&#xff1a;验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化&#xff1a;测试aof和aof持久化机制&#xff0c;确保数据在开启后正确恢复。 事务&#xff1a;检查事务的原子性和回滚机制。 发布订阅&#xff1a;确保消息正确传递。 2、性…...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...