[python] Numpy库用法(持续更新)

先导入一下

import numpy as np
一、np.random用法
  1. 生成随机整数:np.random.randint(low, high, size)

    • low: 最小值
    • high: 最大值
    • size: 生成的数组大小(可以是多维,下面同理)
  2. 生成随机浮点数:np.random.uniform(low, high, size)

    • low: 最小值
    • high: 最大值
    • size: 生成的数组大小

在NumPy中,np.random.uniform这个函数的名称中的"uniform"指的是均匀分布(Uniform Distribution)。这种分布中,所有数值在一定范围内出现的概率是均等的,也就是说,这个范围内的任何一个数被选中的机会都是一样的。这和其他一些分布不同,比如正态分布,其中某些数值出现的机率比其他数值高。

具体来说,当你使用np.random.uniform(low, high, size)时:

  • lowhigh参数定义了数值的范围,其中low是下限(包含),high是上限(不包含)。
  • size参数决定了生成多少个这样的随机数。

举个例子,如果你调用np.random.uniform(1, 5, 3),NumPy将会生成一个数组,包含3个在1(包含)到5(不包含)之间均匀分布的随机浮点数。

因此,这个函数被命名为"uniform",正是因为它生成的是遵循均匀分布规律的随机数。

  1. 生成服从正态分布的随机数:np.random.normal(loc, scale, size)

    • loc: 均值
    • scale: 标准差
    • size: 生成的数组大小
  2. 生成一个随机排列:np.random.permutation(x)

    • x: 输入的数组或整数
  3. 生成一个随机样本:np.random.sample(size)

    • size: 生成的数组大小
  4. 生成一个随机种子:np.random.seed(seed)

    • seed: 种子值
  5. 生成一个符合指定概率分布的随机数:np.random.choice(a, size, replace, p)

    • a: 输入的数组
    • size: 生成的数组大小
    • replace: 是否可以重复抽样
    • p: 每个元素被抽样的概率
  6. 生成一个随机数组成的矩阵:np.random.rand(d0, d1, ..., dn)

    • d0, d1, ..., dn: 矩阵的维度
  7. 生成一个随机整数矩阵:np.random.randint(low, high, size)

    • low: 最小值
    • high: 最大值
    • size: 生成的矩阵大 小
import numpy as np# 生成一个随机整数
random_int = np.random.randint(1, 10, 5)
print(random_int)# 生成一个随机浮点数
random_float = np.random.uniform(1.0, 5.0, 5)
print(random_float)# 生成一个服从正态分布的随机数
random_normal = np.random.normal(0, 1, 5)
print(random_normal)# 生成一个随机排列
random_permutation = np.random.permutation([1, 2, 3, 4, 5])
print(random_permutation)# 生成一个随机样本
random_sample = np.random.sample(5)
print(random_sample)# 生成一个随机种子
np.random.seed(0)
random_seed = np.random.rand(3)
print(random_seed)# 生成一个符合指定概率分布的随机数
random_choice = np.random.choice([1, 2, 3, 4, 5], 3, replace=False, p=[0.1, 0.2, 0.3, 0.2, 0.2])
print(random_choice)# 生成一个随机矩阵
random_matrix = np.random.rand(2, 3)
print(random_matrix)# 生成一个随机整数矩阵
random_int_matrix = np.random.randint(1, 10, (2, 3))
print(random_int_matrix)# 生成一个服从均匀分布的随机数
random_uniform = np.random.rand(2, 3)
print(random_uniform)

输出结果

[9 6 4 8 5]
[1.87678294 4.17125097 4.34816045 4.56395443 1.99147984]
[-0.27015379 -1.82642694  0.96417976  1.38643896  0.23534789]
[5 1 3 2 4]
[0.73823778 0.70459439 0.67601929 0.45422436 0.67000757]
[0.5488135  0.71518937 0.60276338]
[3 4 2]
[[0.891773   0.96366276 0.38344152][0.79172504 0.52889492 0.56804456]]
[[6 9 5][4 1 4]]
[[0.95715516 0.14035078 0.87008726][0.47360805 0.80091075 0.52047748]]
二.一些数据处理函数

 

 

 

np.load

  • 用途:这个函数用于加载存储在.npy文件中的NumPy数组。这是一种高效存储和读取NumPy数组数据的方式,特别适用于持久化大型数组。

np.astype

  • 用途astype方法允许你复制数组并将其元素转换为一个指定的类型。这在数据处理中非常常见,比如将整数数组转换为浮点数数组,或者将浮点数数组转换为整数数组。类型转换是数据预处理的一个重要步骤。

np.shape 和 .shape

  • 用途:这些用法提供了一种获取NumPy数组维度的方法。np.shape是一个函数,而.shape是数组对象的一个属性。了解数组的形状对于进行数组操作(如重塑或切片)是非常重要的。

np.reshape

  • 用途reshape方法允许在不更改数组数据的前提下,给数组一个新的形状。这在将数据准备为特定格式进行机器学习模型训练时尤其有用。

np.std

  • 用途:这个函数计算沿指定轴的标准差,是度量数据分散程度的一个重要统计量。在数据分析和科学研究中,标准差用于衡量数值的波动程度。

np.mean

  • 用途mean函数计算沿指定轴的平均值。平均值是最常用的统计量之一,用于描述数据集中趋势的中心位置。

np.max

  • 用途:这个函数计算沿指定轴的最大值。在数据分析中,了解数据的范围(最大值和最小值)对于评估数据的分布和极值非常重要。

np.arange

  • 用途arange函数返回一个有等差数列构成的数组。这个函数非常适用于生成序列数据,例如生成连续的时间点序列。它是Python内置range函数的NumPy版本,但可以生成浮点序列并具有更多的灵活性。

val_X.reshape(val_X.shape[0], -1)的操作并不是将数组重塑为一维数组,而是重塑为二维数组,其中第一维度保持不变,第二维度自动计算以包含剩余的所有元素。

具体来说:

  • val_X.shape[0]:这是val_X数组的第一个维度的大小,即行数。
  • -1:这个参数告诉NumPy自动计算第二个维度的大小,以便保持所有数据元素的总数不变。

例如,如果val_X原来的形状是(100, 2, 3),这表示有100个2x3的矩阵。执行val_X.reshape(val_X.shape[0], -1)后,形状将变为(100, 6),这意味着每个原始的2x3矩阵现在被展平成一个包含6个元素的一维数组,但在更大框架下,它们作为100行的二维数组存在。

因此,reshape操作并没有创建一个真正的一维数组,而是创建了一个二维数组,其第一维保持为原数组的行数,第二维展平了原有的每个子矩阵。

 

假设我们有一个数组test_Y,它表示某种测试数据的标签,如下所示:

test_Y = np.array([1, 2, 1, 3, 2, 1, 3])

我们想要找出所有标签等于1的数据的索引。在这个例子中,y的值设为1

  1. 首先,np.arange(num_data)生成一个从0开始的等差数列。假设num_data等于test_Y的长度,即7,那么生成的数组就是[0, 1, 2, 3, 4, 5, 6]

  2. 接下来,test_Y == 1生成一个布尔数组,表示test_Y中每个位置的值是否等于1。对于我们的test_Y,结果是:

    [True, False, True, False, False, True, False]

    这意味着在位置0、2和5的值等于1

  3. 最后,通过使用上一步生成的布尔数组作为索引,我们从步骤1生成的等差数列中选择索引。因此,np.arange(num_data)[test_Y == 1]的结果将是:

    [0, 2, 5]

    这个结果告诉我们,在test_Y数组中,值等于1的元素位于原数组的第0、第2和第5个位置。

总结一下,这行代码的作用是找出test_Y中所有等于y值的元素的索引,并以数组的形式返回这些索引。这种技巧在处理分类问题时特别有用,例如,当你需要根据分类结果选择或操作数据的子集时。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu 22.04进行远程桌面连接

文心一言 Ubuntu 22.04进行远程桌面连接,无论是连接到Windows 10还是另一个Ubuntu 22.04,都可以通过不同的方式实现。以下是具体的步骤: 连接到Windows 10 在Windows 10上开启远程桌面功能:首先,需要在Windows 10上…

ViT:拉开Trasnformer在图像领域正式挑战CNN的序幕 | ICLR 2021

论文直接将纯Trasnformer应用于图像识别,是Trasnformer在图像领域正式挑战CNN的开山之作。这种简单的可扩展结构在与大型数据集的预训练相结合时,效果出奇的好。在许多图像分类数据集上都符合或超过了SOTA,同时预训练的成本也相对较低   来源…

深入理解MD5算法:原理、应用与安全

title: 深入理解MD5算法:原理、应用与安全 date: 2024/4/11 20:55:57 updated: 2024/4/11 20:55:57 tags: MD5算法数据安全哈希函数摘要算法安全漏洞SHA算法密码学 第一章:引言 导言 在当今数字化时代,数据安全和完整性变得至关重要。消息…

【学习路径】AI入门路线分享

近期整理飞书文档,一些权限被关掉了。看好多人在申请访问这个飞书文档,于是把它单独拿出来放在CSDN上,供大家参考~ 原视频地址:AI:从小白到入门,超详细人工智能成长路径分享_哔哩哔哩_bilibili 文章目录 1.…

HarmonyOS实战开发-证书管理、如何实现对签名数据进行校验功能。

介绍 本示例使用了ohos.security.certManager相关接口实现了对签名数据进行校验的功能。 实现场景如下: 1)使用正确的原始数据和签名数据进行签名校验场景:模拟服务端对签名数据进行校验,验证客户端身份和原始数据完整性。 2&…

【安装部署】国产数据库OpenGauss的安装部署以及问题排查解决(全网唯一一个解决的!含源码分析)

国产数据库OpenGauss的安装部署以及问题排查解决(含源码分析) 💖点赞超100,将取消VIP文章,免费公开 前面都是一些排除得方式,如果想知道最终的问题,可以直接切换到3.3章节 💖如果您需要这篇文章可以扫描下方的公众号二维码,私信我们,我们将帮您解答 目录 国产数…

CentOS7安装MySQL8.0教程

环境介绍 操作系统:Centos7.6 MySQL版本: 8.0.27 只要是8.0.*版本,那就可以按照本文说明安装 一、安装前准备 1、卸载MariaDB 安装MySQL的话会和MariaDB的文件冲突,所以需要先卸载掉MariaDB。 1.1、查看是否安装mariadb rpm -…

AI大模型探索之路-应用篇10:Langchain框架-架构核心洞察

目录 前言 一、LangChain设计目标 二、LangChain设计之道 三、LangChain典型应用 1、简单的问答Q&A over SQL CSV: 2、聊天机器人Chatbots: 3、总结摘要Summarization: 4、网页爬虫Web scraping: 5、本地知识库(Q&A with RAG): 三、LangChain架构…

blender安装mmd并导入pmx,pmd文件

点击链接GitHub上下载这个,值得注意的是blender4.0以上版本暂时不支持,这里使用的是blender3.6版本GitHub - powroupi/blender_mmd_tools: mmd_tools is a blender addon for importing Models and Motions of MikuMikuDance. 复制当前内容 粘贴到当前…

组合数学<1>——组合数学基础

今天我们聊聊组合数学。(本期是给刚刚学习组合数学的同学看的&#xff0c;dalao们可以自行忽略) 建议:不会求逆元的出门左转数论<2>&#xff0c;不会数论的出门右转数论<1>。 加乘原理 加乘原理小学奥数就有。 总的来说:加法原理:分类;乘法原理:分步 比如说&a…

中国网站数量竟然比2022年多了10000个

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 CNNIC发布了最新中国互联网报告&#xff0c;报告显示&#xff1a; 2018年中国有523万个网站&#xff0c;2023年13月下降到388万个&#xff0c;5年时间网站数量下降30%&#xff0c;但相比于2022年12月&#xff0c;竟…

ThinkPHP审计(1) 不安全的SQL注入PHP反序列化链子phar利用简单的CMS审计实例

ThinkPHP代码审计(1) 不安全的SQL注入&PHP反序列化链子phar利用&简单的CMS审计实例 文章目录 ThinkPHP代码审计(1) 不安全的SQL注入&PHP反序列化链子phar利用&简单的CMS审计实例一.Thinkphp5不安全的SQL写法二.Thinkphp3 SQL注入三.Thinkphp链5.1.x结合phar实现…

第6章 6.3.1 正则表达式的语法(MATLAB入门课程)

讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 正则表达式可以由一般的字符、转义字符、元字符、限定符等元素组…

普通函数和箭头函数的区别

普通函数和箭头函数在JavaScript中主要有以下区别&#xff1a; 语法形式。箭头函数使用简洁的箭头语法>定义&#xff0c;不需要像普通函数那样使用function关键字。匿名性。箭头函数只能是匿名的&#xff0c;而普通函数可以是匿名的&#xff0c;也可以具有具体的名称。this…

【C++】1.从C语言转向C++

目录 一.对C的认识 二.C的关键字 三.命名空间 3.1命名空间的定义 3.2命名空间的使用 四.C的输入与输出 五.缺省参数 5.1全缺省参数 5.2半缺省参数 六.函数重载 七.引用 7.1引用的特性 7.2引用和指针的区别 八.内联函数 九.auto关键字&#xff08;C1…

LLMs之ToolAlpaca:ToolAlpaca(通用工具学习框架/工具使用语料库)的简介、安装和使用方法、案例应用之详细攻略

LLMs之ToolAlpaca&#xff1a;ToolAlpaca(通用工具学习框架/工具使用语料库)的简介、安装和使用方法、案例应用之详细攻略 目录 ToolAlpaca的简介 0、《ToolAlpaca: Generalized Tool Learning for Language Models with 3000 Simulated Cases》翻译与解读 1、数据集列表 2…

openGauss_5.0.1 企业版安装及问题记录(CentOS系统):主备模式服务器安装

目录 &#x1f4da;第一章 官方地址&#x1f4d7;安装包下载地址&#x1f4d7;文档指南 &#x1f4da;第二章 安装&#x1f4d7;准备工作&#x1f4d7;开始安装&#x1f4d5;创建XML配置文件&#x1f4d5;初始化安装环境&#x1f4d5;执行安装&#x1f4d5;验证 &#x1f4da;第…

【算法刷题 | 回溯思想 01】4.11(回溯算法理论、组合、组合总和 ||| )

文章目录 回溯1.回溯算法理论基础1.1什么是回溯法&#xff1f;1.2回溯法的效率1.3回溯法解决的问题1.4如何理解回溯法&#xff1f;1.5回溯法模板 2.组合2.1问题2.2解法一&#xff1a;暴力解法&#xff08;循环次数不确定&#xff09;2.3解法二&#xff1a;回溯2.3.1回溯思路&am…

《web应用技术》第三次课后练习

实验目的&#xff1a; 1、springboot入门程序撰写并启动 2、使用postman练习参数的获取。 参考&#xff1a;Day04-10. Web入门-SpringBootWeb-快速入门_哔哩哔哩_bilibili

海外媒体发稿:新加坡 Asia One VS新加坡sg雅虎

海外媒体发稿&#xff1a;新加坡 Asia One VS新加坡sg雅虎 新加坡&#xff1a;雅虎 官网&#xff1a;sy.yahoo.com 官网&#xff1a;asiaone.com/lite 亚洲第一站。是 新加坡的新闻和生活方式网站和新闻聚合器。它是 新加坡第一个纯数字 内容平台&#xff0c;主要为新加坡、…