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

第二十一天-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操作的是多维数组&#xff0c;什么是纬度&#xff1f; NumPy使用 1. 安装 pip install numpy import numpy as np 2.官网&#xff1a; 中文官网&#xff1a…...

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类的神秘世界

&#x1f389;个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名乐于分享在学习道路上收获的大二在校生 &#x1f648;个人主页&#x1f389;&#xff1a;GOTXX &#x1f43c;个人WeChat&#xff1a;ILXOXVJE &#x1f43c;本文由GOTXX原创&#xff0c;首发CSDN&…...

使用gnvm下载nodejs和npm

目录 前言 一、下载gnvm 二、利用gnvm下载nodejs 三、下载对应版本的npm 四、gnvm常用的命令 总结 前言 由于之前下载的版本过低&#xff0c;需要升级版本。但在使用gnvm升级node版本时遇到了一系列的问题&#xff0c;索性就把nodejs全部删除&#xff0c;重新用gnvm在下…...

C语言——简易版扫雷

目录 前言 ​编辑 游戏规则 游戏结构的分析 游戏的设计 使用多文件的好处有以下几点&#xff1a; 游戏代码实现 框架&#xff08;test.c&#xff09; game函数&#xff08;test.c&#xff09; InitBoard初始化&#xff08;game.c&#xff09; Print打印棋盘&#xff08;g…...

L3自动驾驶的“双保险”:冗余EPS关键技术解析

摘要: 本文主要介绍冗余EPS的发展路径和关键技术。 引言 在乘用车领域,电动助力转向系统(Electric Power Steering,EPS)相比传统的液压助力转向系统(Hydraulic Power Steering,HPS)具有结构简单、响应迅速、能耗低等优点,因此应用很广。随着智能驾驶的发展,作为底层…...

java.net.UnknownHostException

目录 报错信息 报错分析 UnknownHostException 分析 尝试解决 域名 报错可能 网络请求&#xff1a; 数据库连接&#xff1a; Socket通信&#xff1a; 总结&#xff1a; 报错信息 java.net.UnknownHostException Caused by: java.net.UnknownHostException:at java.…...

比派电器T6白色系高速吹风机,高品质保证下,追求极致性价比

广东比派电器科技有限公司于2020年成立于东莞市松山湖高新技术企业园区融易大厦&#xff0c;公司聚焦于小家电的研发&#xff0c;生产&#xff0c;销售。专注在小家电的PCBA研发&#xff0c;产品设计&#xff0c;成品生产。提供小家电产品一站式解决方案&#xff0c;致力于成为…...

每天学习一个Linux命令之ss

每天学习一个Linux命令之ss 在Linux中&#xff0c;网络管理是非常重要的一项工作。ss&#xff08;Socket Statistics&#xff09;是一个强大的命令行工具&#xff0c;用于获取各种网络套接字统计信息。它可以帮助我们查看网络连接、监听套接字、路由表、组播成员等信息。本文将…...

Qt的信号槽机制

1. 什么是元对象编译器和元对象系统&#xff1f; 在开始讲信号槽之前&#xff0c;我们先了解下Qt的框架的核心组成部分&#xff0c;Qt的元对象编译器&#xff08;MOC&#xff09;和元对象系统是Qt框架的核心组成部分&#xff0c;它们使得Qt拥有了信号与槽机制、反射&#xff08…...

跨域问题总结

文章目录 概要web应用整体请求流程技术名词解释跨域问题产生的原理解决方案前端代码角度前端服务器角度后端代码角度后端服务器角度 小结 概要 在不成熟的前后端开发过程中&#xff0c;经常遇到跨域问题&#xff1b; 在前后端分离的模式下的开发过程中&#xff0c;经常遇到跨域…...

K8s-MySQL主从集群

K8s-MySQL主从集群 引言 该案例代码均可从https://github.com/WeiXiao-Hyy/k8s_example 获取&#xff0c;欢迎Star&#xff01; 需求 一个“主从复制”的MySQL集群有一个主节点Master有多个从节点Slave从节点需要能水平扩展所以写操作只能在主节点上执行读操作可以在所有节点…...

seo js转码工具

js转码工具作用 用于把js加密 如果不想让别人看到自己的js 代码就可以使用这个方法 js工具网址 https://tool.chinaz.com/js.aspx 效果...

【SQL】601. 体育馆的人流量(with as 临时表;id减去row_number()思路)

前述 知识点学习&#xff1a; with as 和临时表的使用12、关于临时表和with as子查询部分 题目描述 leetcode题目&#xff1a;601. 体育馆的人流量 思路 关键&#xff1a;如何确定id是连续的三行或更多行记录 方法一&#xff1a; 多次连表&#xff0c;筛选查询方法二&…...

java上传本地文件到服务器共享

在Windows系统中,将本地文件夹中的某个文件上传到另一台Windows服务器电脑上,前提:两台电脑网络互通,要接收文件的Windows服务器文件夹开启了共享,可以被本机用如下方式进行写入和读取: 如何配置服务器共享请自行百度查找。 所需要的maven依赖如下: <dependency>…...

Redis场景总结

使用场景 在大型的秒杀库存扣减&#xff0c;app首页流量高峰&#xff0c;很容易将传统的关系型数据库(mysql&#xff0c;oracle等&#xff09;给压垮。 还有很多没必要持久化的数据&#xff0c;比如说短信验证码&#xff0c;点赞数等。 分布式锁。 分布式缓存(会话共享)。 …...

2024.3.11 C++作业

1、提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数要求使用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函数&#xff1a;表示返回当前电脑系统显示的日期。 公式用法&#xff1a;TODAY() 2、NOW函数 返回当前电脑系统显示的日期和时间 NOW函数&#xff1a;表示返…...

初级爬虫实战——伯克利新闻

文章目录 发现宝藏一、 目标二、简单分析网页1. 寻找所有新闻2. 分析模块、版面和文章 三、爬取新闻1. 爬取模块2. 爬取版面3. 爬取文章 四、完整代码五、效果展示 发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不…...

WPF资源的继承

假设这里有一个全局的资源 <Style TargetType"TextBlock"><Setter Property"FontSize" Value"40"/> </Style> 这是时候有些控件可能需要一个样式在这个基础上加一点内容的 <Style x:Key"textBlockStyle" Targ…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...

WEB3全栈开发——面试专业技能点P7前端与链上集成

一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染&#xff08;SSR&#xff09;与静态网站生成&#xff08;SSG&#xff09; 框架&#xff0c;由 Vercel 开发。它简化了构建生产级 React 应用的过程&#xff0c;并内置了很多特性&#xff1a; ✅ 文件系…...