[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值的元素的索引,并以数组的形式返回这些索引。这种技巧在处理分类问题时特别有用,例如,当你需要根据分类结果选择或操作数据的子集时。

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

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

相关文章

下线圈和包扎

电机槽内放好 所有槽纸 槽内再放入引槽纸 作用是放线圈的时候避免划伤线 开始放线圈 绑了白色扎带的朝外面 线圈的一边放进去后,另一边还悬在外面 ,这里俗称 吊边。 为了保护吊边 ,在吊边处放一张大的绝缘纸 (如下图&#xff0…

32.WEB渗透测试-数据传输与加解密(6)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:31.WEB渗透测试-数据传输与加解密(5) 关于discuz3.5的源码内容和…

C++STL--谓词

谓词 ① 可调用的表达式称为谓词,包括仿函数,自定义函数,lambda表达式。 ② 接受一个参数的谓词,称为一元谓词。 ③ 接受两个参数的谓词,称为二元谓词。 可调用的表达式:对于一个对象或者表达式,如果可以使用调用运算符(),就称它为可以调用的。 一元谓…

java混淆的重要性分析

Java代码混淆是一种常用的安全技术,它通过对Java代码进行变换和重命名,使得源代码变得难以理解和逆向工程,从而增强代码的安全性。以下是对Java混淆重要性的分析: 保护知识产权:Java混淆可以防止恶意用户或竞争对手轻易…

macos 查看 远程服务器是否开放某个端口

想要使用mac查看远程服务器某个端口是否开发&#xff0c;可通过 nc 命令&#xff0c;如下&#xff1a; nc -zv <服务器IP> <端口号>如果该端口开发&#xff0c;结果为&#xff1a;succeeded! Connection to <服务器IP> port <端口号> [类型] succeed…

密码学 | 椭圆曲线 ECC 密码学入门(二)

目录 4 椭圆曲线&#xff1a;更好的陷门函数 5 奇异的对称性 6 让我们变得奇特 ⚠️ 原文地址&#xff1a;A (Relatively Easy To Understand) Primer on Elliptic Curve Cryptography ⚠️ 写在前面&#xff1a;本文属搬运博客&#xff0c;自己留着学习。如果你和我一样…

leetcode 1702

leetcode 1702 题目 例子 代码思路 class Solution { public:string maximumBinaryString(string binary) {int n binary.size();int i binary.find(0);if(i string::npos){return binary;}int zeros count(binary.begin(), binary.end(), 0);string s(n, 1);s[izeros-1]…

Python爬虫怎么挣钱?6个Python爬虫赚钱方式,搞搞副业不是问题

1.最典型的就是找爬虫外包活儿 网络爬虫最通常的的挣钱方式通过外包网站&#xff0c;做中小规模的爬虫项目&#xff0c;向甲方提供数据抓取&#xff0c;数据结构化&#xff0c;数据清洗等服务。新入行的程序员大多都会先尝试这个方向&#xff0c;直接靠技术手段挣钱&#xff0…

数据结构复习指导之绪论(算法的概念以及效率的度量)

文章目录 绪论&#xff1a; 2.算法和算法评价 知识总览 2.1算法的基本概念 知识点回顾与重要考点 2.2算法效率的度量 知识总览 1.时间复杂度 2.空间复杂度 知识点回顾与重要考点 归纳总结 绪论&#xff1a; 2.算法和算法评价 知识总览 2.1算法的基本概念 算法( Al…

一辆汽车的节拍时间是怎样的?

节拍时间&#xff0c;又称 takt time&#xff0c;是德语中“节奏”的意思。在汽车制造业中&#xff0c;它指的是按照客户需求和生产计划&#xff0c;生产一辆汽车所需的时间。这个时间是固定的&#xff0c;它决定了生产线上每个工序的操作速度和节奏&#xff0c;是生产线上所有…

一题多解之数塔问题

递归实现:记忆化深度遍历 #include <iostream> #include <algorithm> #include <string> using namespace std; int num[1000][1000],n;//递归实现:记忆化深度遍历 int dfs(int x,int y){int sum0;//记录最大情况if(x>n||y>x) return sum;//实现每次都…

功能测试_验证标题长度合法性_边界值法

验证标题长度合法性&#xff08;标题长度大于0&#xff0c;小于等于30个字符&#xff09; 开内闭外&#xff0c;保留1和31

水电智能远程抄表系统

水电智能远程抄表系统是一种应用先进技术实现水电抄表的智能化管理系统&#xff0c;通过远程抄表、数据传输和智能分析&#xff0c;实现了对水电使用情况的实时监测和管理。本文将从系统特点、构成以及带来的效益三个方面展开介绍。 系统特点 1.远程抄表&#xff1a;系统能够…

cas学习4:自定义登出页面

接上一章学习 cas学习3&#xff1a;自定义登录页面_cas 个性化页面-CSDN博客 后我们要自定义登出页面&#xff0c;因为在配置完cas后各个子系统退出后的都是cas登出页面。不符合实际需要&#xff0c;所以我们要配置自己的登出页面 1.修改application.properties 增加&#…

有效确认手机号机主姓名,避免信息错误

在如今信息爆炸的时代&#xff0c;手机已经成为我们生活中必不可少的一部分。手机号码的重要性已经不仅仅是联系工具&#xff0c;更是诸多场景下的实名认证必备条件&#xff0c;如电商、游戏、直播、金融等。为了保证用户信息的准确性和安全性&#xff0c;挖数据平台上的手机号…

软件测试学习之MySQL学习笔记(完结)

目录 1. 数据库**** 1.1. 概念**** 1.2. 分类**** 1.2.1. 关系型数据库**** 1.2.1.1. SQL**** 1.2.2. 安装**** 1.2.2.1. Navicat**** 2. SQL语句**** 2.1. 常用数据类型**** 2.2. 数据库**** 2.3. 表**** 2.3.1. 字段约束**** 2.4. 数据**** 2.4.1. 增 insert**…

AI革新病历系统-能“读懂”病历,或将能“思考”

Artificial Intelligence&#xff08;人工智能&#xff09;&#xff0c;简称AI。它其实是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。 电子病历系统拖慢了医疗工作流程&#xff0c;人工智能或许能改善这一困境。 一位名叫罗杰的…

典型神经网络模型—自编码器

文章目录 编码器的介绍基本原理编码器的分类 应用案例网络构建训练步骤&#xff1a;调优&#xff1a; 编码器的介绍 基本原理 在神经网络中&#xff0c;编码器&#xff08;Encoder&#xff09;是一种用于将输入数据转换为另一种形式的网络组件或模型部分。编码器的核心任务是…

Teachable Machine模型之TensorFlow使用篇

前言: 使用在teachable machine训练的h5格式模型 tensorflow使用篇 1. 使用teachable machine训练模型 地址: 传送门, 需要梯子翻一下 训练后, 导出的时候可以选择三种类型 导出模型文件 converted_keras.zip (py版) 解压后得到 2. py项目中使用模型 根据你当时使用tea…

FFmpeg: 简易ijkplayer播放器实现--06封装打开和关闭stream

文章目录 流程图stream openstream close 流程图 stream open 初始化SDL以允许⾳频输出&#xff1b;初始化帧Frame队列初始化包Packet队列初始化时钟Clock初始化音量创建解复用读取线程read_thread创建视频刷新线程video_refresh_thread int FFPlayer::stream_open(const cha…