python—NumPy基础(3)

news2024/9/21 0:38:49

文章目录

    • 算术函数
      • 算术函数的使用
      • 算术函数中out参数的使用
      • mod()函数的使用
    • 统计函数
      • power()函数的使用
      • median ()函数的使用
      • mean ()函数的使用
      • 函数的使用
    • 其他常用函数
      • tile()和repeat()函数的使用
      • roll()函数的使用
      • resize()函数的使用
      • replace()和put()函数的使
      • savetxt()和loadtxt()函数的使用
      • any()、all()函数的使用
      • where()函数的使用
      • dot函数的使用
    • 数组排序
      • 一维数组排序
      • 二维数组排序
      • 按最后一列进行排序
    • numpy广播机制
      • 两个数组相加
      • 维度不相同的数组相加

numpy 是 Python 中的一个开源数值计算扩展库,它提供了大量的数学函数库,以及一个强大的 N 维数组对象 ndarray。numpy 是 Python 进行科学计算的基础包,广泛用于数据分析、机器学习、深度学习等领域。

算术函数

如果参与运算的两个对象 都是ndarray,并且形状相同,那么会对位彼此之间进行(+ - * /)运算。NumPy 算术函数包含简单的加减乘除: add(),subtract(),multiply() 和divide()。

算术函数的使用

a=np.arange(9,dtype=np.float).reshape(3,3)
b=np.array([10,10,10])
print(np.add(a,b))
print(a+b)
print(np.subtract(a,b))
print(a-b)
print(np.multiply(a,b))
print(a*b)
print(np.divide(a,b))
print(a/b)

算术函数中out参数的使用

x = np.arange(5)
y = np.empty_like(x)
np.multiply(x, 10, out=y)
print(y)

mod()函数的使用

numpy.mod() 计算输入数组中相应元素的相除后的余数。函数numpy.remainder() 也产生相同的结果。

a=np.array([10,10,30])
b=np.array([3,5,7])
print(np.mod(a,b))
print(np.remainder(a,b))
print(a%b)

统计函数

NumPy 提供了很多统计函数,用于从数组中查找最小元素,最大元素,百分位标准差和方差等。 具体如下:

函数名说明
np.sum()求和
np.prod()所有元素相乘
np.mean()平均值
np.std()标准差
np.var()方差
np.median()中数
np.power()幂运算
np.sqrt()开方
np.min()最小值
np.max()最大值
np.argmin()最小值的下标
np.argmax()最大值的下标
np.cumsum()对数组中元素累积求和,可指定轴
np.cumprod()对数组中元素累积求积,可指定轴
np.ptp()计算一组数中最大值与最小值的差,可指定轴
np.unique()删除数组中的重复数据,并对数据进行排序
np.nonzero()返回数组中非零元素的索引

power()函数的使用

numpy.power() 函数将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的幂。

x = np.arange(1,5)
y = np.empty_like(x)
np.power(x, 2, out=y)
print(y)

median ()函数的使用

a=np.array([4,2,1,5])
#计算偶数的中位数
print('偶数的中位数:'
,np.median(a))
a=np.array([4,2,1])
print('奇数个的中位数:'
,np.median(a))
a=np.arange(1,16).reshape(3,5)
print('调用median函数')
print(np.median(a))
print('调用median函数,axis=1 行的中值')
print(np.median(a,axis=1))
print('调用median函数,axis=0 列的中值')
print(np.median(a,axis=0))

mean ()函数的使用

numpy.mean() 函数返回数组中元素的算术平均值。 如果提供了轴,则沿其计算。算术平均值是沿轴的元素的总和除以元素的数量。

a=np.arange(1,11).reshape(2,5)
print(np.mean(a))
print('调用mean函数 axis=0 列')
print(np.mean(a,axis=0))
print('调用mean函数 axis=1 行')
print(np.mean(a,axis=1))

函数的使用

a = np.random.randint(10,50,size=20)
np.max(a)
np.sum(a)
np.min(a)
np.max(a)
np.ptp(a)
np.unique(a)
np.nonzero(a)

其他常用函数

方法说明
np.tile()将数组的数据按照行列复制扩展
np.repeat()将数组中的每个元素重复若干次
roll()沿指定轴对数组元素进行移位
resize()重新调整数组的大小
place()/put()将数组中满足条件的元素/指定的元素替换为指定的值
np.savetxt()将数据保存到txt文件中
np.loadtxt()从文件中加载数据
np.genfromtxt()根据文件内容中生成数据,可以指定缺失值的处理等
np.any()如果数组中存在一个为True的元素(或者能转为True的元素),则返回True
np.all()如果数组中所有元素都为True(或者能转为True的元素),则返回True
np.where(条件,x,y)如果条件为True,对应值为x,否则对应值为y
np.dot()将矩阵相乘
np.sort()对数组进行排序,返回一个新的排好序的数组,原数组不变
np.argsort()返回的是数组值从小到大排序后元素对应的索引值

tile()和repeat()函数的使用

a = np.arange(4)
#复制2次
np.tile(a,2)
#行列复制
np.tile(a,(3,2))
np.repeat(a,2)
a = np.arange(1,13).reshape(3,4)
np.repeat(a,2)
np.repeat(a,2,axis=0)
np.repeat(a,2,axis=1)

roll()函数的使用

#一维数组
#向后调3个
np.roll(a,3)
#向前调1个
np.roll(a,-1)
#二维数组
np.roll(aa,2)
np.roll(aa,2,axis=0)

resize()函数的使用

aa.reshape(4,3)#修改维度,元素个数必须相同
np.resize(aa,(5,6)) #resize重新调整数组的大小,元素个数可以不相同

replace()和put()函数的使

aa = np.random.randint(40,100,(3,4))
#小于60分的 全部替换为0
np.place(aa,aa<60,0)
#put()指定的索引处的元素替换为指定的值
aa = np.arange(1,13).reshape(3,4)
np.put(aa,2,100)

savetxt()和loadtxt()函数的使用

#保存
a = np.random.randint(-50,100,1000)
np.savetxt('savetxt.txt',a,fmt='%d')
#加载
b = np.loadtxt('savetxt.txt',dtype=int)
b

any()、all()函数的使用

#any函数 只要有一个元素为True,则结果返回True
#all函数 只有所有元素都为True,则结果返回True
x = np.array([False,True,True,1,None,0])
np.any(x)
np.all(x)

where()函数的使用

np.random.seed()
a = np.random.randint(20,100,10)
print(a)
print(np.where(a>50,True,False))

dot函数的使用

#dot函数 矩阵相乘
x = np.array([[1,2],[3,4]])
y = np.array([[2,3],[1,2]])
x.dot(y)
x.dot(3) #每个元素与3相乘

注意:矩阵相乘前提是,第一个矩阵的列数和第二个矩阵的行数要相同

数组排序

在这里插入图片描述

一维数组排序

排序中主要用到的方法是np.sort和np.argsort。其中np.sort()是对数组直接排序。而np.argsort()是返回排序后的原始索引。

a=np.array([5,2,4,6,1,9])
print('sort排序后:'
,np.sort(a))
print('argsort排序:'
,np.argsort(a))

二维数组排序

np.random.seed(44)
a=np.random.randint(100,size=(4,6))
#直接使用sort排序指定axis的值
print(np.sort(a,axis=0))
print(np.sort(a,axis=1))

按最后一列进行排序

#可以先获取最后一列的数组
b=a[:,-1]
print(b)
#获取最后一列数组排序后的原始索引
index=np.argsort(b)
#使用facy_indexing汇总数组
print(a[index])

numpy广播机制

在这里插入图片描述

两个数组相加

import numpy as np
# 在numpy中存在广播机制
a=np.array([0,1,2])
print(a+5)
b=np.array([5,5,5])
print(a+b)

维度不相同的数组相加

a=np.arange(3) #一行[0 1 2]
b=np.arange(3).reshape(3,1)  #三行1列
'''
广播的规则
1,如果两个数组维度个数不同,那么小维度的数组形状会在
左边补1
2,如果两个数组形状在任何一个维度上都不匹配,数组的形
状会沿着维度为1的维度扩展到匹配上另一个数组的形状
3,如果没有维度形状为1,则会引发异常
0 1 2         0 0 0
0 1 2         1 1 1
0 1 2         2 2 2
'''
print(a+b)

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

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

相关文章

可视挖耳勺的正确使用方法:四款宝藏单品,等你来挑选!

现在很多人都关注自己的个护健康&#xff0c;越来越多人开始使用可视挖耳勺。传统挖耳勺很有可以清洁不干净&#xff0c;导致耳耵聍堆积在耳道深处&#xff0c;引起耳朵发炎甚至感染。可视挖耳勺可以在看见耳道内部的情况下精准挖出耳耵聍&#xff0c;一定程度上安全又有效。但…

git命令使用详细介绍

1 环境配置 设置的信息会保存在~/.gitconfig文件中 查看配置信息 git config --list git config user.name设置用户信息 git config --global user.name "有勇气的牛排" git config --global user.email “1809296387qq.com”2 获取Git仓库 2.1 本地初始化一个仓…

Apache压测工具ab(Apache Bench)工具的下载安装和使用示例

场景 Jmeter进行http接口压力测试&#xff1a; Jmeter进行http接口压力测试_接口压测两万量-CSDN博客 上面讲压测工具Jmeter的使用&#xff0c;下面介绍另外一个ab(Apache Bench)压测工具的使用。 apache bench apache bench是apache自带的压力测试工具。 ab不仅可以对ap…

HTML开发笔记:3.图形化开发软件与模版网站

一、Google Web Designer 下载网址&#xff1a;webdesigner.withgoogle.com&#xff08;得挂梯子&#xff09; 可以编辑文字 可以插入图片&#xff0c;快捷键是ctrlshiftI 右侧“大纲”属性中可以调节大小 可以点击右上角在浏览器中预览效果&#xff1a; 二、模版网站 https://…

前端学习3——自学习梳理

1.学习一下盒子模型(盒子就是元素&#xff0c;标签) 盒子模型又分为4种&#xff1a;块级&#xff0c;内联级&#xff0c;内联块级&#xff0c;弹性盒子 (弹性盒子续在下一节) 2.元素的结构 1.盒子模型 <!DOCTYPE html> <html lang"en"> <head>&l…

《Java初阶数据结构》----5.<二叉树的概念及使用>

前言 大家好&#xff0c;我目前在学习java。之前也学了一段时间&#xff0c;但是没有发布博客。时间过的真的很快。我会利用好这个暑假&#xff0c;来复习之前学过的内容&#xff0c;并整理好之前写过的博客进行发布。如果博客中有错误或者没有读懂的地方。热烈欢迎大家在评论区…

mysql定时备份

为什么写这篇文章 最近项目里面需要定时备份mysql的数据&#xff0c;网上找了下&#xff0c;找到了一些比较好的解决方案。但是发现有几个地方与自己不匹配&#xff0c;我期望有如下 备份过程不能锁表&#xff0c;网上很多都是会锁表备份定时任务无法执行&#xff0c;但是手动…

CTF ssrf 基础入门 (一)

0x01 引言 我发现我其实并不是很明白这个东西&#xff0c;有些微妙&#xff0c;而且记忆中也就记得Gopherus这个工具了&#xff0c;所以重新学习了一下&#xff0c;顺便记录一下吧 0x02 辨别 我们拿到一个题目&#xff0c;他的名字可能就是题目类型&#xff0c;但是也有可能…

STM32H7的MDMA、DMA2D和通用DMA性能比较

STM32H7的MDMA、DMA2D和通用DMA性能比较 MDMA测试初始化MDMA数据传输&#xff08;DWT单位2.5n&#xff09; DMA2DDMA2D初始化数据传输 DMA最终结论&#xff08;参考armfly&#xff09; MDMA&#xff0c;DMA2D 和每个都测试了四种情况&#xff1a; ◆ 64 位带宽的 AXI SRAM 内部…

STM32F401VET6 PROTEUS8 ILI9341 驱动显示及仿真

stm32cubemx新建工程代码&#xff0c;并生成工程 设置gpio 设置SPI 其他的参考stm32默认设置 然后编辑驱动代码 ili9341.h #ifndef ILI9341_H #define ILI9341_H#include <stdbool.h> #include <stdint.h>#include "glcdfont.h" #include "stm32…

rv1126物体检测 rkmedia、opencv……

整体码流流向&#xff1a; 因此代码也分为这几部分&#xff1a; VI&#xff1a;采集视频 配置视频采集信息 模型推理线程&#xff1a;获取VI码流、载入模型、进行模型推理、保存推理结果 画框线程&#xff1a;获取VI码流、获取推理结果、显示推理结果、输出码流到VENC VENC…

w30-python02-pytest入门

代码如下&#xff1a; import pytest class Test_Obj:"""测试类"""#用例级别前后置def setup(self):print(用例级别------的前置处理)def teardown(self):print("用例级别--------的后置处理")# 用例def test_case1(self):print(&quo…

Photoshop(PS) 抠图简单教程

目录 快速选择 魔棒 钢笔 橡皮擦 蒙版 通道 小结 可以发现&#xff0c;ps逐渐成为必备基础的办公软件。本文让ps新手轻松学会抠图。 快速选择 在抠图之前&#xff0c;先了解下选区的概念。ps中大多数的抠图操作都是基于选区的&#xff0c;先选区再Ctrl J提取选区。而快…

android13 Settings动态显示隐藏某一项

总纲 android13 rom 开发总纲说明 目录 1.前言 2.确定目标设置项 3.修改参考 3.1 方法1 3.2 方法2 4.编译测试 5.彩蛋 1.前言 在Android 13系统中,动态显示或隐藏Settings应用中的某一项通常涉及到对Settings应用的内部逻辑进行修改。由于Settings应用是一个系统应用…

Fine-BI学习笔记

官方学习文档&#xff1a;快速入门指南- FineBI帮助文档 FineBI帮助文档 (fanruan.com) 1.零基础入门 1.1 功能简介 完成四个流程&#xff1a;新建分析主题、添加数据、分析数据、分享协作。 示例数据获取&#xff1a;5分钟上手FineBI - FineBI帮助文档 (fanruan.com) 1.2 …

Vue--解决error:0308010C:digital envelope routines::unsupported

原文网址&#xff1a;Vue--解决error:0308010C:digital envelope routines::unsupported_IT利刃出鞘的博客-CSDN博客 简介 本文介绍如何解决node.js在运行Vue项目时的报错&#xff1a;error:0308010C:digital envelope routines::unsupported。 问题描述 使用node.js运行Vu…

Zabbix监控TiDB数据库教程

作者 乐维社区&#xff08;forum.lwops.cn&#xff09; 许远 1概述 TiDB数据库是一个常见的开源分布式关系型数据库&#xff0c;通过使用分布式事务、分布式 SQL 引擎和分布式存储引擎来实现高可用性和横向扩展性。而 Docker 则是一个开源的容器化平台&#xff0c;它可以帮助开…

服务端渲染中的数据获取:结合 useRequestHeaders 与 useFetch

title: 服务端渲染中的数据获取&#xff1a;结合 useRequestHeaders 与 useFetch date: 2024/7/24 updated: 2024/7/24 author: cmdragon excerpt: 摘要&#xff1a;本文介绍Vue服务端渲染中使用useRequestHeaders获取请求头部信息&#xff0c;如cookie和authorization&…

入门 PyQt6 看过来(案例)07~ 文件选择

本文实现一个图片和文本文件选择器的案例&#xff0c;效果如下&#xff1a; ​ 文件选择查看功能很简单&#xff0c;只需要设计好图片文件和文本文件的选择函数就可以了。 1 图片文件选择 #图片文件选择槽函数&#xff0c;支持png ico jpg格式文件def imgFile(self):fname, _tm…

paraFoam 运行 报错 usr/lib/x86_64-linux-gnu/libQt5Core.so 已解决

在日常项目开发中。使用ubuntu 视图开发的时候。报错 缺少 libQt5Core 核心组件&#xff01; whereis libQt5Core.so.5sudo strip --remove-section.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 完美解决&#xff0c;并且能正常打开&#xff0c;前提是&#xff0c…