第二十一天-NumPy
目录
什么是NumPy
NumPy使用
1.数组的创建
2.类型转换
3.赠删改查
4.数组运算
5.矩阵运算
什么是NumPy
1.NumPy操作的是多维数组,什么是纬度?

NumPy使用
1. 安装
pip install numpy
import numpy as np
2.官网:
中文官网:numpy.org.cn
1.数组的创建
1.创建一个一维数组:array
import numpy as np#创建一个一维数组
d1=np.array([1,2,3,4,5])
print(d1)
#查看size
print(d1.size)
#查看type
print(type(d1))
#查看数据维度
print(d1.ndim)
out:
[1 2 3 4 5]
5
<class 'numpy.ndarray'>
1
2.创建一个二维数组:arnge
#创建一个二维数组
d2=np.arange(15)
print(d2)
#增加行,列维度
d2=d2.reshape(3,5)
print(d2)
out:
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]]
3.创建全为0或1的数组
# 创建全为0的数组
d3 = np.zeros(15)
d3 = d3.reshape(3, 5)
print(d3)d4 = np.ones(15)
d4 = d4.reshape(3, 5)
print(d4)
out
[[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]]
[[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]]
4.empty,创建新数组,只分配内存空间,不填充任何值
d5 = np.empty(([1,2,3]))
print(d5)
2.类型转换
numpy会自动根据传入类型设置数据类型
1. 数组转np数组
# 数组转为np数组
data = [[1, 2, 3, 4], [5, 6, 7, 8]]
print(type(data))
d1 = np.array(data)
print(d1)
print(type(d1))
out:
<class 'list'>
[[1 2 3 4]
[5 6 7 8]]
<class 'numpy.ndarray'>
2.dtype识别数据类型
d4 = np.ones(15)
d4 = d4.reshape(3, 5)
print(d4.dtype)
out:float64
3.创建时指定数据类型
d4 = np.arange(15,dtype=np.float64)
d4 = d4.reshape(3, 5)
print(d4)print(d4.dtype)
4.对ndarray进行数据类型转换,astype
data4.astype(np.float64)
3.赠删改查
1.索引
#一维数组索引获取数据 d1=np.arange(15) print(d1) print("获取第一个:",d1[0]) print("获取最后一个:",d1[-1])#二维数组 d2=np.arange(15).reshape(3,5) print(d2) print("获取第一行第一列,方法1:",d2[0,0]) print("获取第一行第一列,方法2:",d2[0][0]) print("获取倒数第一行第一列,方法1:",d2[-1,-1]) print("获取倒数第一行第一列,方法2:",d2[-1][-1])#三维数组 d2=np.arange(30).reshape(3,5,2) print(d2) print("获取第一行第一列第一个,方法1:",d2[0,0,0]) print("获取第一行第一列第一个,方法2:",d2[0][0][0]) print("获取倒数第一行第一列第一个,方法1:",d2[-1,-1,-1]) print("获取倒数第一行第一列第一个,方法2:",d2[-1][-1][-1])[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
获取第一个: 0
获取最后一个: 14
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]]
获取第一行第一列,方法1: 0
获取第一行第一列,方法2: 0
获取倒数第一行第一列,方法1: 14
获取倒数第一行第一列,方法2: 14
[[[ 0 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]
[28 29]]]
获取第一行第一列第一个,方法1: 0
获取第一行第一列第一个,方法2: 0
获取倒数第一行第一列第一个,方法1: 29
获取倒数第一行第一列第一个,方法2: 29
2.索引
#一维数组切片
d1=np.arange(15)
print("===",d1[0:3]) #截取包含起始下标到不包含结尾的数据
print("===",d1[:-1]) #截取全部#二维数组切片
d2=np.arange(15).reshape(3,5)
print("===",d2[0:1,:]) #行参数,列参数
print("===",d2[:,3:4]) #获取全部行,中3列的数据#三维数组
d3=np.arange(30).reshape(3,5,2)
print("===",d3)
print("===",d3[0:1,2:,:]) #行参数,列参数,三维参数#根据索引获取数据
#一维数组
print("===",d1[np.array([0,2,4])])print("===",d2[np.array([0,2]),np.array([1,2])])
=== [0 1 2]
=== [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]
=== [[0 1 2 3 4]]
=== [[ 3]
[ 8]
[13]]
=== [[[ 0 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]
[28 29]]]
=== [[[4 5]
[6 7]
[8 9]]]
=== [0 2 4]
=== [ 1 12]
4.数组运算
1. 算数运算
import numpy as np#算数运算 a= np.random.random(10000)*10 b= np.random.random(10000)*10 #加法 print("加法:",np.add(a,b)) print("减法:",np.subtract(a,b)) print("除法:",np.divide(a,b)) print("乘法:",np.multiply(a,b))加法: [13.06866571 6.26206256 7.44861655 ... 12.38302847 13.97542329
11.69602862]
减法: [-1.04377832 4.84747125 2.0907946 ... -5.08931599 -0.78999914
7.99437207]
除法: [0.85207689 7.85352893 1.78046438 ... 0.41744326 0.89299336 5.31934836]
乘法: [42.42513755 3.92886251 12.77761661 ... 31.85956422 48.67208937
18.22177516]
2.数学函数
如:sin, 更多函数请看官方文档
#数学三角函数 ang=np.array([0,30,45,60,90,120,135,150,180]) rad=np.sin(ang*np.pi/180) print(rad)[0.00000000e+00 5.00000000e-01 7.07106781e-01 8.66025404e-01
1.00000000e+00 8.66025404e-01 7.07106781e-01 5.00000000e-01
1.22464680e-16]
3.统计函数
# 统计函数 d2 = np.array([1, 2, 3, 4, 5]) print("平均值mean:", np.mean(d2)) print("平均值average:", np.average(d2)) print("平均值,加权:", np.average(d2, weights=np.array([2, 2, 1, 1, 1]))) print("中位数median:", np.median(d2)) # 中位数,如未偶数,则取中间2个值进行除以2 print("中位数median,偶数:", np.median([1, 2, 3, 4, 5, 6])) #方差 求每个数的离散值 print("方差,,var:", np.var(d2)) print("标准差,std:", np.std(d2))平均值mean: 3.0
平均值average: 3.0
平均值,加权: 2.5714285714285716
中位数median: 3.0
中位数median,偶数: 3.5
方差,求每个数的离散值,var: 2.0
标准差,std: 1.4142135623730951
4.聚合运算
sum与np.sum性能对比,np.sum函数比内置统计函数快了10倍

#聚合运算 a = np.array([1, 2, 3, 4, 5]) print("内置统计函数sum:",sum(a)) print("numpay统计函数:sum:",np.sum(a)) print("累计乘prod:",np.prod(a)) print("最大值max:",np.max(a)) print("最小值min:",np.min(a))内置统计函数sum: 15
numpay统计函数:sum: 15
累计乘prod: 120
最大值max: 5
最小值min: 1
5.筛选排序:
# 筛选、排序 a = np.array([1, 2, 3, 4, 5, 6]) # 筛选函数,注意返回的是下标 print("筛选:", np.where(a > 3)) print("排序,升序:", np.sort(a))筛选: (array([3, 4, 5], dtype=int64),)
排序: [1 2 3 4 5 6]
5.矩阵运算
1.什么是矩阵,
- 按照长方阵列(m行*n列)排列的数值集合


- dot使用
a = np.arange(15).reshape(3, 5) b = np.arange(15, 30).reshape(3, 5) print("a:",a) print("b:",b) # 转置 a = a.T print("a转置后",a) print(np.dot(a, b))a: [[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]]
b: [[15 16 17 18 19]
[20 21 22 23 24]
[25 26 27 28 29]]
a转置后 [[ 0 5 10]
[ 1 6 11]
[ 2 7 12]
[ 3 8 13]
[ 4 9 14]]
[[350 365 380 395 410]
[410 428 446 464 482]
[470 491 512 533 554]
[530 554 578 602 626]
[590 617 644 671 698]]
相关文章:
第二十一天-NumPy
目录 什么是NumPy NumPy使用 1.数组的创建 2.类型转换 3.赠删改查 4.数组运算 5.矩阵运算 什么是NumPy 1.NumPy操作的是多维数组,什么是纬度? NumPy使用 1. 安装 pip install numpy import numpy as np 2.官网: 中文官网:…...
Vue:自动按需导入element-plus图标
自动导入使用 unplugin-icons 和 unplugin-auto-import 从 iconify 中自动导入任何图标集。 完整vite.config.js参考模板 https://download.csdn.net/download/ruancexiaoming/88928539 动态导入图标参考 https://blog.csdn.net/ruancexiaoming/article/details/136568219 导入…...
魔法之线:探索string类的神秘世界
🎉个人名片: 🐼作者简介:一名乐于分享在学习道路上收获的大二在校生 🙈个人主页🎉:GOTXX 🐼个人WeChat:ILXOXVJE 🐼本文由GOTXX原创,首发CSDN&…...
使用gnvm下载nodejs和npm
目录 前言 一、下载gnvm 二、利用gnvm下载nodejs 三、下载对应版本的npm 四、gnvm常用的命令 总结 前言 由于之前下载的版本过低,需要升级版本。但在使用gnvm升级node版本时遇到了一系列的问题,索性就把nodejs全部删除,重新用gnvm在下…...
C语言——简易版扫雷
目录 前言 编辑 游戏规则 游戏结构的分析 游戏的设计 使用多文件的好处有以下几点: 游戏代码实现 框架(test.c) game函数(test.c) InitBoard初始化(game.c) Print打印棋盘(g…...
L3自动驾驶的“双保险”:冗余EPS关键技术解析
摘要: 本文主要介绍冗余EPS的发展路径和关键技术。 引言 在乘用车领域,电动助力转向系统(Electric Power Steering,EPS)相比传统的液压助力转向系统(Hydraulic Power Steering,HPS)具有结构简单、响应迅速、能耗低等优点,因此应用很广。随着智能驾驶的发展,作为底层…...
java.net.UnknownHostException
目录 报错信息 报错分析 UnknownHostException 分析 尝试解决 域名 报错可能 网络请求: 数据库连接: Socket通信: 总结: 报错信息 java.net.UnknownHostException Caused by: java.net.UnknownHostException:at java.…...
比派电器T6白色系高速吹风机,高品质保证下,追求极致性价比
广东比派电器科技有限公司于2020年成立于东莞市松山湖高新技术企业园区融易大厦,公司聚焦于小家电的研发,生产,销售。专注在小家电的PCBA研发,产品设计,成品生产。提供小家电产品一站式解决方案,致力于成为…...
每天学习一个Linux命令之ss
每天学习一个Linux命令之ss 在Linux中,网络管理是非常重要的一项工作。ss(Socket Statistics)是一个强大的命令行工具,用于获取各种网络套接字统计信息。它可以帮助我们查看网络连接、监听套接字、路由表、组播成员等信息。本文将…...
Qt的信号槽机制
1. 什么是元对象编译器和元对象系统? 在开始讲信号槽之前,我们先了解下Qt的框架的核心组成部分,Qt的元对象编译器(MOC)和元对象系统是Qt框架的核心组成部分,它们使得Qt拥有了信号与槽机制、反射(…...
跨域问题总结
文章目录 概要web应用整体请求流程技术名词解释跨域问题产生的原理解决方案前端代码角度前端服务器角度后端代码角度后端服务器角度 小结 概要 在不成熟的前后端开发过程中,经常遇到跨域问题; 在前后端分离的模式下的开发过程中,经常遇到跨域…...
K8s-MySQL主从集群
K8s-MySQL主从集群 引言 该案例代码均可从https://github.com/WeiXiao-Hyy/k8s_example 获取,欢迎Star! 需求 一个“主从复制”的MySQL集群有一个主节点Master有多个从节点Slave从节点需要能水平扩展所以写操作只能在主节点上执行读操作可以在所有节点…...
seo js转码工具
js转码工具作用 用于把js加密 如果不想让别人看到自己的js 代码就可以使用这个方法 js工具网址 https://tool.chinaz.com/js.aspx 效果...
【SQL】601. 体育馆的人流量(with as 临时表;id减去row_number()思路)
前述 知识点学习: with as 和临时表的使用12、关于临时表和with as子查询部分 题目描述 leetcode题目:601. 体育馆的人流量 思路 关键:如何确定id是连续的三行或更多行记录 方法一: 多次连表,筛选查询方法二&…...
java上传本地文件到服务器共享
在Windows系统中,将本地文件夹中的某个文件上传到另一台Windows服务器电脑上,前提:两台电脑网络互通,要接收文件的Windows服务器文件夹开启了共享,可以被本机用如下方式进行写入和读取: 如何配置服务器共享请自行百度查找。 所需要的maven依赖如下: <dependency>…...
Redis场景总结
使用场景 在大型的秒杀库存扣减,app首页流量高峰,很容易将传统的关系型数据库(mysql,oracle等)给压垮。 还有很多没必要持久化的数据,比如说短信验证码,点赞数等。 分布式锁。 分布式缓存(会话共享)。 …...
2024.3.11 C++作业
1、提示并输入一个字符串,统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数要求使用C风格字符串完成 #include <iostream>using namespace std;int main() {char str[20];cout << "please enter the str:";gets(str);in…...
【wps】wps与office办公函数储备使用(结合了使用案例 持续更新)
【wps】wps与office办公函数储备使用(结合了使用案例 持续更新) 1、TODAY函数 返回当前电脑系统显示的日期 TODAY函数:表示返回当前电脑系统显示的日期。 公式用法:TODAY() 2、NOW函数 返回当前电脑系统显示的日期和时间 NOW函数:表示返…...
初级爬虫实战——伯克利新闻
文章目录 发现宝藏一、 目标二、简单分析网页1. 寻找所有新闻2. 分析模块、版面和文章 三、爬取新闻1. 爬取模块2. 爬取版面3. 爬取文章 四、完整代码五、效果展示 发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不…...
WPF资源的继承
假设这里有一个全局的资源 <Style TargetType"TextBlock"><Setter Property"FontSize" Value"40"/> </Style> 这是时候有些控件可能需要一个样式在这个基础上加一点内容的 <Style x:Key"textBlockStyle" Targ…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...
