前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >图解NumPy包一文就够了(2025版)

图解NumPy包一文就够了(2025版)

作者头像
生信技能树
发布于 2025-03-12 06:56:00
发布于 2025-03-12 06:56:00
25700
代码可运行
举报
文章被收录于专栏:生信技能树生信技能树
运行总次数:0
代码可运行

学习python,必须对其数据结构了如指掌以达到随意提取所需的数据,numpy包是python中一个比较重要的模块,前面在生信菜鸟团有一篇笔记,今天再来学习一下,写一个2025版,同时看看包有没有啥更新的吧~

关于python学习的环境搭建,推荐:vscode + jupter + 服务器,可以随便搜一个教程安装一下~这里不再描述。

本学习帖子介绍一些使用 NumPy 的主要方法,以及在将它们用于机器学习模型之前,它如何表示不同类型的数据 (表、图像、文本等)。

ref:https://jalammar.github.io/visual-numpy/

numpy包简介

NumPy 包是 Python 生态系统中数据分析、机器学习和科学计算的主力。它极大地简化了对向量和矩阵的操作和处理,Python 的一些主要软件包依赖 NumPy 作为其基础设施的基本组成部分 (例如 scikit-learn、 SciPy、pandas 和 tensorflow)。

在 vcsode 中新建一个文件,numpy.ipynb,打开就可以交互式的运行python了:官网好像已经更新到 2.2.0版本了!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 导入莫夸
import numpy as np

# 查看版本
np.__version__
# 1.26.4

创建数组

1.通过传递给np.array()函数一个list对象,来创建一个数组:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 比如这里一维的数组
data = np.array([1,2,3])
data

图示如下,有了图的加持,真的非常好理解:

2.创建一个随机初始化数组

np.onesnp.zerosnp.random.random分别表示创建一个指定长度为n的数组:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data = np.ones(3)
data

data = np.zeros(3)
data

data = np.random.random(3)
data

图示:

3.多维数组

二维:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data = np.array([[1,2],[3,4]])
data

# 同样的
np.ones((3,2))
np.zeros((3,2))
np.random.random((3,2))

更高维:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
np.array([ [[1,2],[3,4]],
          [[5,6],[7,8]] ])
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
np.ones((4,3,2))
np.zeros((4,3,2))
np.random.random((4,3,2))

提取子集

使用下标和切片提取,python的下标是从0开始的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data = np.array([[1,2],[3,4],[5,6]])
data
data[0,1]
data[1:3]
data[1:3,]
data[0:2,0]

数组转置与reshape()

转置:行变成列,列变成行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data = np.array([[1,2],[3,4],[5,6]])
data
data.T

reshape:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data = np.array([1,2,3,4,5,6])
data
data.reshape(2,3)
data.reshape(3,2)

数组运算

1.矩阵可以进行加减乘除等数学运算:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 首先创建两个维度一致的矩阵:
data = np.array([1,2])
ones = np.ones(2)
# 加法
ad = data + ones
ad

2.其他运算:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 减法
sub = data - ones
sub
# 乘法
mul = data * data
# 除法
div = data / data
# 自动补全
pl = data * 1.6

图示:但是这里的运算好像和线性代数里面感觉有点不一样啊?

3.自动补全:

4.最小值/最大值/平均值等:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data = np.array([1,2,3])
data.max()
data.min()
data.sum()
data.prod()
data.std()

二维数组每一行每一列的最大、最小值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data = np.array([[1,2],[3,4],[5,6]])
data.max(axis=0)
data.max(axis=1)

axis=0表示按列运算,axis=1表示按行运算:

更多的运算见:https://jakevdp.github.io/PythonDataScienceHandbook/02.04-computation-on-arrays-aggregates.html

5.多维数组运算

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# data + ones
data = np.array([[1,2],[3,4]])
ones = np.ones((2,2))
data + ones
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# data + ones_row
data = np.array([[1,2],[3,4],[5,6]])
ones_row = np.ones((1,2))
data + ones_row

6.点积运算(dot)

这个运算看起来比较像线性代数里面的两个矩阵相乘:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data1 = np.array([1,2,3])
data2 = np.array([[1,10],[100,1000],[10000,100000]])
data1.dot(data2)

高级运算

除了向量和矩阵支持运算外,公式的使用也是 NumPy 成为宠儿的原因之一。

例如在解决回归问题中监督式机器学习的核心公式:均方差公式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
error = (1/n) * np.sum(np.square(predictions - labels))

具体计算过程如下:predictions 与 labels 这两个参数的长度需要相同:

step1
step1

step1

step2
step2

step2

step3
step3

step3

step4
step4

step4

更多应用

1.音频文件

一段音频可以存为一个一维数组,通过切片法可以剪辑任意一段:

CD 质量的音频每秒包含 44,100 个样本,每个样本是-65535 到 65536 之间的整数。这意味着如果你有一个 10 秒的 CD 质量 WAVE 文件,你可以将它加载到长度为 10 * 44,100 = 441,000 的 NumPy 数组中

2.图像Images

图像是像素大小 (高度 x 宽度) 的矩阵。

如果图像是黑白的 (也称为灰度) ,每个像素可以用一个数字表示 (通常介于 0 (黑色) 和 255 (白色) 之间)。想要裁剪图像左上角 10 x 10 像素的部分吗?使用numpy

如果图像是彩色的,那么每个像素用三个数字表示 —— 红色、绿色和蓝色各一个值。在这种情况下,我们需要一个三维 (因为每个单元格只能包含一个数字)。所以一个彩色图像是由一个3维数组表示的: (高 x 宽 x 3)

使用图的形式直观展示出来是不是容易理解多了~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
这 5 种常用运维监控工具都不会?你算啥运维人
运维监控工具千千万,仅开源的解决方案就有流量监控(MRTG、Cacti、SmokePing、Graphite 等)和性能告警(Nagios、Zabbix、Zenoss Core、Ganglia、OpenTSDB等)可供选择。
互联网老辛
2021/04/22
2.9K0
这 5 种常用运维监控工具都不会?你算啥运维人
一篇文章带你了解当下主流的监控工具
以往,在缺少告警机制的情况下,企业无法第一时间洞悉到系统发生故障,只能通过用户的反馈来获取,系统运维人员往往也只是充当了一个“救火” 队员,大面积的系统瘫痪往往也会给企业和用户带来极大的损失
lyb-geek
2019/11/22
1.9K0
【快猫星云】Nightingale 监控详解(一)
夜莺监控( Nightingale )是一款国产、开源云原生监控分析系统,采用 All-In-One 的设计,集数据采集、可视化、监控告警、数据分析于一体。于 2020 年 3 月 20 日,在 github 上发布 v1 版本,已累计迭代 60 多个版本。从 v5 版本开始与 Prometheus、VictoriaMetrics、Grafana、Telegraf、Datadog 等生态紧密协同集成,提供开箱即用的企业级监控分析和告警能力,已有众多企业选择将 Prometheus + AlertManager + Grafana 的组合方案升级为使用夜莺监控。
用户6792968
2023/04/24
1.3K0
【快猫星云】Nightingale 监控详解(一)
构建企业级监控平台系列(三):企业常用监控工具介绍
前面介绍了 企业级监控概述及发展、企业监控运维等相关的知识点,今天我将详细的为大家介绍企业常见运维监控工具相关知识
民工哥
2023/09/28
1.9K1
构建企业级监控平台系列(三):企业常用监控工具介绍
企业监控调研指引:17个精心准备的开源运维监控系统
监控系统是整个运维环节,乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供翔实的数据用于追查定位问题。监控系统作为一个成熟的运维产品,业界有很多开源的实现可供选择。当公司刚刚起步,业务规模较小,运维团队也刚刚建立的初期,选择一款开源的监控系统,是一个省时省力,效率最高的方案。之后,随着业务规模的持续快速增长,监控的对象也越来越多,越来越复杂,监控系统的使用对象也从最初少数的几个SRE,扩大为更多的DEVS,SRE。这时候,监控系统的容量和用户的“使用效率”成了最为突出的问题。 监控系统业
小小科
2018/05/04
4.1K0
企业监控调研指引:17个精心准备的开源运维监控系统
监控场景及开源监控方案选型
目前监控系统越来越重要,同时也越来越完备。不但能很好地解决上面这几点诉求,还沉淀很多监控系统中的稳定性相关的知识。当然,这得益于对监控体系的持续运营,特别是一些资深工程师的持续运营的成果。
JavaEdge
2024/01/13
6980
监控场景及开源监控方案选型
做了5年运维,靠着这份监控知识体系,我从3K变成了40K
监控是整个运维乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供详实的数据用于追查定位问题。目前业界有很多不错的开源产品可供选择。选择一款开源的监控系统,是一个省时省力、效率最高的方案。当然,对监控不是很明白的朋友们,看了以下文章可能会对监控整个体系有比较深刻的认识。
IT大咖说
2020/04/23
2.3K0
做了5年运维,靠着这份监控知识体系,我从3K变成了40K
这款 7k Star 的国产监控系统,真不错!
我们都知道天下没有“永不宕机”的系统,但每次线上出问题都要拉出一个程序员“祭天”。所以一款靠谱、好用的监控工具就显得十分重要,它可以在生产环境出故障的第一时间发出告警,并提供详实的数据,帮助程序员尽早发现故障、尽快定位问题。
HelloGitHub
2023/10/19
1.1K0
这款 7k Star 的国产监控系统,真不错!
监控系统选型,一篇全搞定!
这篇文章,我将对监控体系的基础知识、原理和架构做一次系统性整理,同时还会对几款最常用的开源监控产品做下介绍,以便大家选型时参考。内容包括3部分:
爱撒谎的男孩
2023/01/04
1.8K0
建设DevOps统一运维监控平台,全面的系统监控你做好了吗?
前言 随着Devops、云计算、微服务、容器等理念的逐步落地和大力发展,机器越来越多,应用越来越多,服务越来越微,应用运行基础环境越来多样化,容器、虚拟机、物理机不一而足。面对动辄几百上千个虚拟机、容器,数十种要监控的对象,现有的监控系统还能否支撑的住?来自于容器、虚拟机、物理机、网络设备、中间件的指标数据如何采用同一套方案快速、完整的收集和分析告警?怎样的架构、技术方案才更适合如此庞大繁杂的监控需求呢? 上篇文章《建设DevOps统一运维监控平台,先从日志监控说起》主要从日志监控的方面进行了分享,本篇文章
yuanyi928
2018/03/30
4.8K0
建设DevOps统一运维监控平台,全面的系统监控你做好了吗?
监控系统选型,这篇不可不读!
目前我所经历的几家公司,监控系统都是自研的。其实业界有很多优秀的开源产品可供选择,能满足绝大部分的监控需求,如果能从中选择一款满足企业当下的诉求,显然最省时省力。
码哥字节
2020/09/24
2.9K0
监控系统选型,这篇不可不读!
监控系统开篇
监控系统是运维工作中不可或缺的一部分,它可以帮助我们监控系统的健康状况、运行状态和性能指标等,及时发现和解决问题,确保系统的可靠性和稳定性。SRE对监控系统最基本的需求就是:监控是SRE的第三只眼,使得可以在系统出问题时我们能及时感知到。
五分钟学SRE
2023/11/19
6950
监控系统开篇
几种运维工具的对比
所以说监控是运维这个职业的根本。尤其是在现在DevOps这么火的时候,用监控数据给自己撑腰,这显得更加必要。
全栈程序员站长
2022/07/23
1.7K0
几种运维工具的对比
为什么说Prometheus是开源网络监控工具的后起之秀?优势有哪些?
网络监控是网络管理的重要组成部分,定期网络监控可以预防故障、优化性能、规划容量,确保网络的可用性、安全性等。相比较普通的监控工具,开源网络监控工具拥有可定制性、灵活性、可扩展性等优势,受到国内外众多企业的追捧,有哪些好用的开源网络监控工具,该如何选择呢?
星融元Asterfusion
2024/04/09
5480
为什么说Prometheus是开源网络监控工具的后起之秀?优势有哪些?
开源还是商用?十一大运维监控工具横评
随着云计算和互联网的高速发展,大量应用需要横跨不同网络终端,并广泛接入第三方服务(如支付、登录、导航等),IT系统架构越来越复杂。快速迭代的产品需求和良好的用户体验,需要IT运维管理者时刻保障核心业务稳定可用,而企业运维中的痛点和难点也急需解决。
胡齐
2019/11/13
6.6K0
聊聊下一代监控:Prometheus
我们知道zabbix在监控界占有不可撼动的地位,功能强大。但是对容器监控显得力不从心。为解决监控容器的问题,引入了prometheus技术。
狼王编程
2021/06/01
9490
聊聊下一代监控:Prometheus
Zabbix(1)-监控服务与zabbix介绍
对于传统意义的监控来说,监控系统属于安防系统中应用最多的系统之一,主要是用来监控异常和不好的事情发生,或者提供事件发生过程的记录和事后分析等功能。如视频监控系统就是典型的监控系统,视频监控系统就从早期的 CCTV 发展到 DVR到目前已经发展为基于 IP 网络的视频监控 IPVS。
mikelLam
2022/10/31
5870
Zabbix(1)-监控服务与zabbix介绍
夜莺监控之Categraf监控VMwareVSphere
夜莺监控 夜是一款开源云原生观测分析工具,采用 All-in-One 的设计理念,集数据采集、可视化、监控告警、数据分析于一体,与云原生生态紧密集成,提供开箱即用的企业级监控分析和告警能力。已有众多企业选择将 Prometheus + AlertManager + Grafana 的组合方案升级为使用夜莺。夜莺于 2020 年 3 月 20 日,在 github 上发布 v1 版本,已累计迭代 100 多个版本。
Kubernetes技术栈
2023/06/13
2.2K0
夜莺监控之Categraf监控VMwareVSphere
大数据下的精准实时监控系统 | Promethus or Zabbix?
我们先来了解什么是监控,监控的重要性以及监控的目标,当然每个人所在的行业不同、公司不同、业务不同、岗位不同、对监控的理解也不同,但是我们需要注意,监控是需要站在公司的业务角度去考虑,而不是针对某个监控技术的使用。
王知无-import_bigdata
2021/03/26
3.4K0
大数据下的精准实时监控系统 | Promethus or Zabbix?
Github上排名前五的开源网络监控工具
链接:https://opensource.com/article/19/2/network-monitoring-tools
程序员小猿
2021/07/30
1.5K0
推荐阅读
相关推荐
这 5 种常用运维监控工具都不会?你算啥运维人
更多 >
LV.5
上海爱可生信息技术股份有限公司技术分享
目录
  • numpy包简介
  • 创建数组
    • 1.通过传递给np.array()函数一个list对象,来创建一个数组:
    • 2.创建一个随机初始化数组
    • 3.多维数组
  • 提取子集
  • 数组转置与reshape()
  • 数组运算
    • 1.矩阵可以进行加减乘除等数学运算:
    • 2.其他运算:
    • 3.自动补全:
    • 4.最小值/最大值/平均值等:
    • 5.多维数组运算
    • 6.点积运算(dot)
  • 高级运算
  • 更多应用
    • 1.音频文件
    • 2.图像Images
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档