numpy学习笔记(5),其他实用函数

8. 更多函数

8.1 随机数

8.1.1 常用随机数

8.1.1.1 numpy.random.rand(d0, d1, …, dn)
  • 返回[0.0, 1.0)随机浮点数,即大于等于0.0,小于1.0。
  • d0, d1, …, dn:返回的数组形状
# 使用numpy.random.rand函数
import numpy as np
np.random.rand(3)
array([0.8385857 , 0.8107416 , 0.99370002])
np.random.rand(3, 2)
array([[0.48333664, 0.78368701],
       [0.80706205, 0.3135694 ],
       [0.5942944 , 0.36877126]])
8.1.1.2 numpy.random.randint(low, high=None, size=None, dtype=‘1’)
  • 返回[low, high)随机整数,如果high省略则返回[0, low)随机整数
  • size:返回数组的形状
  • dtype:数组元素类型,l:long
# 使用numpy.random.randint函数
np.random.randint(10, high=20, size=(3, 4))
array([[12, 18, 14, 10],
       [19, 14, 11, 11],
       [13, 14, 14, 10]])

8.1.2 正态分布随机数

8.1.2.1 标准正态分布:numpy.random.randn(d0, d1, …, dn)。
  • 返回标准正态分布对技术,参数与rand函数相同

在这里插入图片描述

np.random.randn(3, 2)
array([[-0.80338048, -0.29042362],
       [-0.76188074, -0.01707931],
       [ 0.26754266, -0.99031277]])
8.1.2.2 正态分布:numpy.random.normal(loc = 0.0, scale = 1.0, size=None)。
  • 返回正态分布随机数
  • loc:平均值
  • scale:标准差
np.random.normal(1024, 30, size=(3, 4))
array([[ 978.98804509, 1024.68441494, 1078.41620308, 1005.00643101],
       [1008.94025792, 1005.52545803, 1009.09307745, 1027.56131116],
       [1023.88789661,  988.79911263, 1012.40717316, 1074.79730252]])

8.2 排序函数

8.2.1 轴排序

sort函数,按照轴对数组进行排序,语法格式如下:

numpy.sort(a, axis=-1, kind='quicksort', order=None)
  • a:要排序的数组
  • axis:排序的轴索引,默认是-1,表示最后一个轴
  • kind:排序类型,可选则quicksort,mergesort,heapsort,默认是quicksort
  • order:排序的字段,自定义对象里可用到
a = np.random.randint(0, 10, size=(3, 4))
# 只在1轴上排序
np.sort(a, axis=1)
array([[0, 5, 8, 8],
       [3, 4, 5, 9],
       [2, 2, 4, 6]])
# 只在0轴上排序
np.sort(a, axis=0)
array([[2, 0, 5, 3],
       [5, 2, 6, 4],
       [8, 4, 9, 8]])

8.2.2 轴排序索引

argsort函数,按照轴对数组进行排序索引,语法格式如下:
numpy.argsort(a, axis=-1, kind=‘quicksort’, order=None)

b = np.random.randint(0, 10, size=(3, 4))
b
array([[9, 9, 8, 6],
       [2, 3, 4, 6],
       [1, 4, 2, 0]])
# 排序返回结果是原数组的索引组合
np.argsort(b, axis=1)
array([[3, 2, 0, 1],
       [0, 1, 2, 3],
       [3, 0, 2, 1]], dtype=int64)

8.3 聚合函数

可以对整个数组元素,或对轴元素进行计算,获取单一值。
如:sum,amin,amax,mean(平均值),average(加权平均值),var(方差),std(标准偏差)等。

聚合函数都会倒置结果数组降低维度

8.3.1 求和

可以使用numpy.sum函数,或numpy.ndarray.sum方法

8.3.1.1 numpy.sum函数,语法如下
numpy.sum(a, axis=None)
  • a:要求和的数组
  • axis:指定轴索引,如果axis没有指定,则求所有元素之和,如果指定,则求该轴上的所有元素之和。
a = np.random.randint(0, 10, size=(3, 4))
print(a)
np.sum(a, 1)
[[3 3 2 6]
 [5 1 0 4]
 [2 6 8 7]]





array([14, 10, 23])
8.3.1.2 numpy.ndarray.sum方法,语法格式如下:
numpy.ndarray.sum(axis=None)
a.sum(1)
array([14, 10, 23])
b = np.arange(0, 27)
b_3 = b.reshape(3, 3, 3)
print(b_3)
# 沿轴计算后的结果,会降低一个维度
print("结果会降低一个维度:", np.sum(b_3, 2))

[[[ 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]]]
结果会降低一个维度: [[ 3 12 21]
 [30 39 48]
 [57 66 75]]

8.3.2 最大值

求最大值可以使用numpy.amax函数,numpy.nanmax函数,或数组的ndarray.max方法

8.3.2.1 numpy.amax函数语法如下:
numpy.amax(a, axis=None)
a = np.random.randint(0, 10, size=(3, 4))
print(a)
np.amax(a, axis=1)
[[9 1 1 3]
 [5 1 8 2]
 [9 4 9 9]]





array([9, 8, 9])
8.3.2.2 numpy.nanmax函数,忽略NaN(Not a Number,非数),语法如下:
numpy.nanmax(a, axis=None)
b = np.array([[np.nan, 1, 2, 3], [4, 5, 6, np.nan]])
np.nanmax(b, axis=1)
array([3., 6.])
8.3.2.3 ndarray.max方法,类似于语法numpy.amax函数,语法如下:
numpy.ndarray.max(axis=None)

8.3.3 最小值

与8.3.2 最大值用法类似

8.3.4 mean,平均值函数

numpy.mean函数,numpy.nanmean函数,或者ndarray.mean方法都可以求平均值。

8.3.4.1 numpy.mean函数语法如下:
numpy.mean(a, axis=None)
import numpy as np
a = np.arange(0, 9)
b = a.reshape(3, 3)
print("b: ", b)
np.mean(b, axis=1)
b:  [[0 1 2]
 [3 4 5]
 [6 7 8]]





array([1., 4., 7.])
# 不指定轴,计算所有元素的平均值,结果是个标量
np.mean(b)
4.0

8.3.5 加权平均值

numpy.average函数,语法如下:

numpy.average(a, axis=None, weights=None)
  • a:数组
  • axis:指定轴
  • weight:权重,一维数组
a = np.arange(0, 10)
b = a.reshape(2, 5)
print("b: ", b)
c = np.average(b, axis=0, weights=[0.3, 0.7])
print("c", c)
b:  [[0 1 2 3 4]
 [5 6 7 8 9]]
c [3.5 4.5 5.5 6.5 7.5]

8.4 unique函数

去除数组中的重复元素,并按照从小到大的顺序排列,语法格式如下:

numpy.unique(a, return_index=False, axis=None)
  • a:原始数组
  • return_index:设置为True,返回原始数组中的索引数组
  • axis:指定轴。如果没有指定,多维数组会降低到一维平铺。
H = [x for x in 'Hello']
W = [y for y in 'world']
print("H: ", H, "\nW: ", W)
H:  ['H', 'e', 'l', 'l', 'o'] 
W:  ['w', 'o', 'r', 'l', 'd']
# 创建二维数组
a = np.array([H, W])
a
array([['H', 'e', 'l', 'l', 'o'],
       ['w', 'o', 'r', 'l', 'd']], dtype='<U1')
# 不指定轴,降低到一维,整体去重
u = np.unique(a)
u
array(['H', 'd', 'e', 'l', 'o', 'r', 'w'], dtype='<U1')
# 返回值的第一个是值,第二个是索引
u, idx = np.unique(a, return_index=True)
# 返回的值数组
u
array(['H', 'd', 'e', 'l', 'o', 'r', 'w'], dtype='<U1')
# 返回的索引数组
idx
array([0, 9, 1, 2, 4, 7, 5], dtype=int64)
# 指定轴
a = np.array([[1, 0, 0], [1, 0, 0], [2, 1, 4]])
print(a)
[[1 0 0]
 [1 0 0]
 [2 1 4]]
# 指定0轴,再0轴上去重
u = np.unique(a, axis=0)
u
array([[1, 0, 0],
       [2, 1, 4]])
# 指定1轴,再1轴上去重,看起来没有效果
u = np.unique(a, axis=1)
u
# 因为1轴上每一个数组去重后,元素数量产生变化
array([[0, 0, 1],
       [0, 0, 1],
       [1, 4, 2]])
# 重新修改初始数组,在一轴上去重
b = np.array([[1, 0, 0], [1, 0, 0], [1, 1, 1]])
print(b)
[[1 0 0]
 [1 0 0]
 [1 1 1]]
u = np.unique(b, axis=1)
u
array([[0, 1],
       [0, 1],
       [1, 1]])

8.5 where函数

where相当于三元运算符,语法格式如下:

numpy.where(condition[, x, y])
  • condition:条件,如果为True返回x,为False返回y
  • x和y可以是标量,或数组。
a = np.arange(5)
a
array([0, 1, 2, 3, 4])
b = np.where(a < 3, a, a + 100)
b
array([  0,   1,   2, 103, 104])

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

百元内的运动蓝牙耳机哪个牌子好?五大高分品牌实测推荐

在追求健康生活的当下&#xff0c;运动已成为许多人日常生活的一部分&#xff0c;而音乐更是运动时的最佳伴侣&#xff0c;对于预算有限的学生党或普通消费者来说&#xff0c;如何在百元内挑选到一款性能优越、品质可靠的运动蓝牙耳机&#xff0c;确实是个不小的挑战&#xff0…

(六)C++自制植物大战僵尸游戏关卡数据讲解

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/xjvbb 游戏关卡数据文件定义了游戏中每一个关卡的数据&#xff0c;包括游戏类型、关卡通关奖励的金币数量、僵尸出现的波数、每一波出现僵尸数量、每一波僵尸出现的类型等。根据不同的游戏类型&#xff0c;定义了不同的通…

ATA-214高压放大器用在哪些实验中使用的

高压放大器在科学实验和工程应用中扮演着关键角色。它是一种能够将低电压信号放大到高电压水平的设备。这种放大器通常用于需要处理高电压信号的实验和应用中。以下是高压放大器在各种实验中的应用范围。 粒子物理实验&#xff1a;在粒子物理实验中&#xff0c;科学家使用高压放…

【分享】3种方法取消Word文档的“打开密码”

我们知道&#xff0c;Word文档可以设置“打开密码”&#xff0c;防止文档被随意打开&#xff0c;那后续不需要密码保护了&#xff0c;要怎么取消呢&#xff1f;不小心把密码忘记了还可以取消吗&#xff1f;不清楚的小伙伴一起来看看吧&#xff01; 如果是Word文档不再需要密码…

Python Flask-Security- 构建安全而强大的Web应用

Flask-Security是一个基于Flask的安全扩展&#xff0c;为开发者提供了构建安全且强大的Web应用的工具。本文将深入探讨Flask- Security的核心功能、基本用法以及在实际应用中的一些高级特性&#xff0c;通过丰富的示例代码&#xff0c;助您更全面地了解和应用这一用于Web应用安…

windows的jar包开机自启动【搬代码】

感觉最方便的就是放到启动项目里操作步骤 winR 输入&#xff1a;shell:startup回车或点击确定 3.将自己jar包右键创建快捷方式 4.然后放进去 5.重启电脑&#xff0c;浏览器输入网址&#xff0c;就可以看到重启成功了 另外一个就是放入.exe文件的快捷方式 首先&#xff0c;…

docker安装nessus服务及使用

Nessus 是目前全世界最多人使用的系统漏洞扫描与分析软件&#xff0c;现在软件服务越来越多&#xff0c;越来越复杂&#xff0c;涉及的数据也更多&#xff1b;因此系统完成后对于系统漏洞的检测并对其进行修改十分有必要&#xff0c;本文介绍通过docker安装nessus服务及简单的使…

15 Python进阶: random和pyecharts

Python random 模块主要用于生成随机数。 random 模块实现了各种分布的伪随机数生成器。 要使用 random 函数必须先导入&#xff1a; import randompython random 模块的一般用法 Python中的random模块提供了生成伪随机数的功能&#xff0c;可以用于模拟、游戏开发、密码学…

关于centos8自带的apache2.4开启https后,XP系统的IE8无法显示网页的问题

经检验&#xff0c;是因为系统的apache和openssl版本太高导致的。 禁用系统默认的apache2.4&#xff0c;自己重新源码编译安装一套openssl-1.0.1fapache2.2.23php7.1.2即可。跟update-crypto-policies没有关系&#xff0c;可保持默认的DEFAULT状态。 关于centos8自带的apache2…

多无人机集群协同避障

matlab2020a正常运行 场景1规划结果 场景2规划结果 场景3规划结果 代码地址&#xff1a; 多无人机集群协同避障效果&#xff08;5架&#xff09;资源-CSDN文库

解锁生成式 AI 的力量:a16z 提供的 16 个企业指南

企业构建和采购生成式AI方面的16项改变 生成式 AI 领域趋势洞察&#xff1a;企业构建和采购生成式 AI 的方式正在发生重大转变&#xff0c;具体表现在&#xff1a;* 专注于可信度和安全性&#xff1a;75% 的企业将信任和安全性视为关键因素。* 优先考虑可扩展性和灵活性&#x…

unity shader学习练笔日记(三)

1、单张纹理 Shader "Unity Shaders Study/Day Three/SingleTexture" {Properties{_Color("Colot Tint", Color) (1, 1, 1, 1)//2D是纹理属性的声明方式。以一个字符串后跟一个花括号作为它的初始值&#xff0c;"white"是内置纹理的名字&#…

内网渗透-域环境的搭建

域环境的搭建 文章目录 域环境的搭建前言一、什么是域环境 什么是域内网基础知识点 二、域环境的搭建 1. 部署域结构2.如何加入域3.SRV出错及解决办法4.SRV记录注册不成功的可能原因 禁用域中的账户将计算机退出域添加域用户总结 前言 一、什么是域环境 什么是域 域是一种管…

5.Pytest自动化测试框架(1)

1.Pytest框架 Pytest框架是Python的一种单元测试框架&#xff0c;与Python自带的unittest框架类似&#xff0c;但比unittest框架更简洁&#xff0c;效率更高 2.设置 3.Pytest命名规范 &#xff08;1&#xff09;Pytest测试文件必须以test_开头&#xff0c;或以_test结尾 &am…

普乐蛙VR神州飞船设备VR太空舱体验馆VR博物馆

中国航天式浪漫知多少&#xff1f;千百年来古人对浩瀚宇宙有着无尽的浪漫想象&#xff0c;而在一代又一代中国航天事业奋斗者的努力中&#xff0c;远古神话不再是幻想&#xff0c;它终被照进现实——中国载人飞船“神舟”、中国载人空间站“天宫”、中国绕月人造卫星“嫦娥一号…

经验分享,京东平台如何实现一键下载商品图片

在京东平台&#xff0c;产品图片制作至关重要。精良的图片能瞬间抓住消费者眼球&#xff0c;激发购买兴趣&#xff0c;它是消费者无法触摸实物情况下对商品的第一感知源&#xff0c;高质量的图片配合适当的图文排版&#xff0c;既有利于提升店铺形象&#xff0c;又能通过视觉传…

通过注解实现接口入参检查

valid 通过注解实现接口入参检查 前言一、引入依赖二、使用步骤1.创建入参对象 request2.提供一个接口 controller3.全局异常捕获 GlobalExceptionHandler4.执行结果 总结 前言 作为一个后端开发&#xff0c;一般是不单独对接口参数的每个入参进行长度、最大值、最小值判断。 …

一款功能齐全的iOS混淆工具介绍及功能详解

机缘巧合偶遇iOS马甲包业务&#xff0c;前期也使用过目前市面上其他得工具&#xff0c;实际效果不太理想。经过大量实践&#xff0c;开发出一款功能齐全的混淆工具。工具的主要功能OC、C、Swift已封装成Mac应用&#xff0c;其他功能还在封装中&#xff0c;敬请期待。 马甲包的本…

YoloV8改进策略:Block改进|轻量级的Mamba打造优秀的YoloV8|即插即用,简单易懂|附Block结构图|检测、分割、关键点均适用(独家原创)

摘要 无Mamba不狂欢,今天给大家带来一个基于轻量级Mamba的改进。模块简单易懂,即插即用! 带领大家去征服更高的领域。 论文:《LightM-UNet:Mamba 辅助的轻量级 UNet 用于医学图像分割》 https://arxiv.org/pdf/2403.05246.pdf UNet及其变体在医学图像分割中得到了广泛…

英语技术会议常用语

个人整理。 自我介绍&#xff1a; Hello everyone, Im [Your Name], and Im excited to be here today. I work as [Your Position] at [Your Company/Organization], where I focus on [Brief Description of Your Role or Expertise]. Im looking forward to our discussion…