菜鸟笔记-Numpy函数-full/random.randint/random.choice

full函数

numpy.full 是 NumPy 库中的一个函数,它用于创建一个具有指定形状、数据类型和填充值的数组。此函数非常有用,因为它允许你快速生成一个具有相同值的数组,而无需手动设置每个元素。

1函数介绍

numpy.full(shape, fill_value, dtype=None, order='C')

  • shape: 数组的形状,可以是一个整数或整数元组。
  • fill_value: 用于填充数组的值。
  • dtype: 数组的数据类型。如果未指定,则将从 fill_value 中推断数据类型。
  • order: 指定数组在内存中的存储顺序。'C' 表示 C 风格的顺序(行优先),'F' 表示 Fortran 风格的顺序(列优先),'A' 表示原始顺序,'K' 表示元素在内存中的出现顺序。

2示例

示例 1:创建一维数组

import numpy as np  # 创建一个长度为 5 的一维数组,所有元素的值都是 7  
arr = np.full(5, 7)  
print(arr)

 结果输出:

[7 7 7 7 7]

示例 2:创建二维数组

import numpy as np  # 创建一个 2x3 的二维数组,所有元素的值都是 10  
arr = np.full((2, 3), 10)  
print(arr)

输出结果:

[[10 10 10]
 [10 10 10]]

示例 3:指定数据类型

import numpy as np  # 创建一个长度为 3 的一维数组,所有元素的值都是 3.14,数据类型为 float  
arr = np.full(3, 3.14, dtype=float)  
print(arr)

输出结果:

[3.14 3.14 3.14]

import numpy as nparr = np.full_like([[1,2,3],[4,5,6]],8)
print(arr)

输出结果:

[[8 8 8]
 [8 8 8]]

import numpy as nparr = np.full_like([[1,2,3],[4,5,6]],[7,8,9])
print(arr)

 [[7 8 9]
 [7 8 9]]

import numpy as nparr = np.full_like([[1,2,3],[4,5,6]],[[7],[8]])
print(arr)

输出结果:

[[7 7 7]
 [8 8 8]]
 

3注意点

  • numpy.full 与 numpy.zeros 和 numpy.ones 有些相似,但 numpy.full 允许你指定填充值,而不仅仅是 0 或 1。
  • 在使用 numpy.full 时,请确保你明确知道 fill_value 的数据类型,以避免不必要的数据类型转换。

random.randint函数

numpy.random.randint 是 NumPy 库中用于生成随机整数的函数。这个函数允许你指定一个范围(包括开始和结束值),然后返回在这个范围内均匀分布的随机整数。

1函数介绍

numpy.random.randint(low, high=None, size=None, dtype='l')

  • low:生成的随机整数的最小值(包含)。
  • high:生成的随机整数的最大值(不包含)。如果未指定,则 high 将被设置为 low 的值,且函数将返回一个等于 low 的随机整数。
  • size:输出的形状。如果提供了,则输出将是给定形状的数组。默认是 None,表示返回一个标量。
  • dtype:输出数组的数据类型。默认是 np.int(通常是 np.int32 或 np.int64,取决于平台)。

2示例

示例 1:生成单个随机整数

import numpy as np  # 生成一个介于 0(包含)和 10(不包含)之间的随机整数  
random_int = np.random.randint(0, 10)  
print(random_int)

输出结果:

4【输出可能是 0 到 9 之间的任意一个整数。】

示例 2:生成一个随机整数数组

import numpy as np  # 生成一个形状为 (3,) 的数组,包含介于 0 和 10 之间的随机整数  
random_ints = np.random.randint(0, 10, size=(3,))  
print(random_ints)

输出结果类似于:

[5 1 1]

示例 3:生成一个一维随机整数数组

import numpy as nprandom_ints_2d = np.random.randint([3,5,7],10)
print(random_ints_2d)

#生成3个随机数,一维数组,分别介于[3,10)、[5,10)、[7,10)之间

类似结果于:

[8 8 9]

例:

import numpy as nprandom_ints_2d = np.random.randint(3,[10,100,5])
print(random_ints_2d)

#生成3个随机数,一维数组,分别介于[3,10)、[3,100)、[3,5)之间

类似结果于:

[ 5 41  4]

例:

import numpy as nprandom_ints_2d = np.random.randint([3,50,1],[10,100,5])
print(random_ints_2d)

#生成3个随机数,一维数组,分别介于[3,10)、[50,100)、[1,5)之间 

类似结果于:

[ 9 96  1]

示例4:生成一个二维随机整数数组

import numpy as np  # 生成一个形状为 (2, 3) 的二维数组,包含介于 0 和 10 之间的随机整数  
random_ints_2d = np.random.randint(0, 10, size=(2, 3))  
print(random_ints_2d)

输出结果类似于:

[[2 9 0]
 [3 3 9]]

3注意点

  • numpy.random.randint 返回的整数是均匀分布的,即在给定范围内,每个整数被选中的概率是相同的。
  • 如果你只提供一个参数给 numpy.random.randint,那么它会被当作 high 参数,而 low 默认为 0。例如,np.random.randint(5) 将返回一个介于 0(包含)和 5(不包含)之间的随机整数。
  • 生成的随机整数是伪随机数,它们是由一个确定的算法生成的,因此每次你运行相同的代码时,如果随机数生成器的种子没有改变,你将得到相同的随机序列。

random.choice

 numpy.random.choice 用于从给定的一维数组或数字序列中随机选择元素。这个函数在需要随机抽样时非常有用,无论是从一组数值中还是从一个更复杂的一维数组(如字符串列表或对象数组)中。

1函数介绍

numpy.random.choice(a, size=None, replace=True, p=None)

参数解释

  1. a
    • 类型:1-D array-like or int。
    • 描述:如果 a 是一个整数,则定义从 0 到 a-1(小于a的非负整数) 的整数数组。如果 a 是一个数组,则从 a 中随机抽取元素。
  2. size
    • 类型:整数或整数元组(可选)。
    • 描述:输出数组的形状。如果提供了形状,则函数将返回一个指定形状的数组,其中每个元素都是从 a 中随机选择的。如果未指定(默认为 None),则返回一个标量。
  3. replace
    • 类型:布尔值(可选)。
    • 描述:是否允许替换。如果 True(默认值),则抽取的元素可以重复出现。如果 False,则抽取的元素不会重复出现,直到所有元素都被抽取。
  4. p
    • 类型:1-D array-like(可选)。
    • 描述:与 a 形状相同的序列,用于指定每个元素被抽取的概率。如果没有提供,则假定所有元素具有相同的抽取概率。

返回值

  • 类型:ndarray。
  • 描述:从 a 中随机抽取的数组,其形状由 size 参数指定。

2示例

示例 1:从整数范围中随机选择

import numpy as np  # 从 0 到 4(包含)中随机选择一个整数  
choice = np.random.choice(5)  
print(choice)

输出结果类似于:

1

例:

import numpy as npabc=np.random.choice(5,10)
print(abc)

从小于5的非负整数中随机选择10个

输出结果类似于:

[2 4 3 2 0 0 0 3 0 0]

例:

import numpy as npabc=np.random.choice([80,70,60,10,50,40],(3,5))
print(abc)

 从指定的数据中随机选择15个,输出结果类似于:

[[70 80 40 60 40]
 [70 60 40 80 40]
 [50 80 40 60 70]]

示例 2:从数组中随机选择元素

import numpy as np  # 创建一个数组  
arr = np.array(['apple', 'banana', 'cherry'])  # 从数组中随机选择一个元素  
choice = np.random.choice(arr)  
print(choice)

输出结果类似于:

apple

示例 3:随机选择多个元素(不替换)

import numpy as np  # 创建一个数组  
arr = np.array([1, 2, 3, 4, 5])  # 从数组中随机选择 3 个不重复的元素  
choices = np.random.choice(arr, size=3, replace=False)  
print(choices)

输出结果类似于:

[3 1 2]

示例 4:使用自定义概率进行随机选择

import numpy as np  # 创建一个数组  
arr = np.array(['a', 'b', 'c', 'd'])  # 定义每个元素被选择的概率  
probs = np.array([0.1, 0.1, 0.6, 0.2])  # 根据定义的概率从数组中随机选择一个元素  
choice = np.random.choice(arr, p=probs)  
print(choice)

结果输出类似于:

d

3注意事项

  • 当 replace 为 False 时,如果 a 中的元素数量小于 size,则 numpy.random.choice 函数将引发一个 ValueError,因为无法在不替换的情况下抽取足够的唯一元素。
  • p 参数必须与 a 的形状相匹配,并且所有概率之和必须为 1。如果未提供 p,则假定所有元素的选择概率相等。
  • numpy.random.choice 返回的数组的数据类型与 a 的数据类型相同(或兼容)。

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

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

相关文章

分享three.js实现乐高小汽车

前言 Web脚本语言JavaScript入门容易,但是想要熟练掌握却需要几年的学习与实践,还要在弱类型开发语言中习惯于使用模块来构建你的代码,就像小时候玩的乐高积木一样。 应用程序的模块化理念,通过将实现隐藏在一个简单的接口后面&a…

Azkaban集群模式部署详细教程

序言 Azkaban是一个用于工作流程调度和任务调度的开源工具,它可以帮助用户轻松地管理和监控复杂的工作流程。Azkaban的架构设计旨在提供高度可扩展性和可靠性,同时保持易用性和灵活性。 Azkaban的架构可以分为三个主要组件:Executor、Web Server和db数据…

golang开发类库推荐

gin star:74.6k 地址:https://github.com/gin-gonic/gin gin是最受开发者欢迎的 Web 框架,它有诸多的优点,性能高、轻量级和简洁的 API 设计,社区活跃度高,灵活、可扩展性强。当然了,最最主要…

【力扣】94. 二叉树的中序遍历、144. 二叉树的前序遍历、145. 二叉树的后序遍历

先序遍历:根-左-右中序遍历:左-根-右后序遍历:左-右-根 94. 二叉树的中序遍历 题目描述 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例 1: 输入:root [1,null,2,3] 输出:[1,3…

Linux:五种IO模型的基本认识

文章目录 IO的本质五种IO模型异步和同步 阻塞IO非阻塞IO信号驱动IO IO的本质 在之前的内容中已经结束了对于网络和操作系统的学习,那么回过来再继续看IO,什么是IO呢? 对于网络的学习当中,实际上也是一种IO,数据从计算…

使用vite创建一个react18项目

一、vite是什么? vite 是一种新型前端构建工具,能够显著提升前端开发体验。它主要由两部分组成: 一个开发服务器,它基于原生 ES 模块提供了丰富的内建功能,如速度快到惊人的模块热更新(HMR)。 …

博客部署004-centos安装mysql及redis

1、如何查看当前centos版本? cat /etc/os-release 2、安装mysql 我的是centos8版本,使用dnf命令 2.1 CentOS 7/8: sudo yum install -y mysql-community-server 或者在CentOS 8上,使用DNF:🌟 sudo dnf install -y mysql-ser…

探秘MIMO技术:无线通信革命的多天线奇迹

单根发射天线和单根接收天线之间的信道容量受限于香农公式,要想在相同的频谱带宽下进一步提高信道容量,要采用多天线技术。 1. 什么是MIMO MIMO:Multiple-Input Multiple-Output,即多入多出系统。这里的入和出是相对于发射天线和…

力控机器人原理及力控制实现

力控机器人原理及力控制实现 力控机器人是一种能够感知力量并具有实时控制能力的机器人系统。它们可以在与人类进行精准协作和合作时,将力传感技术(Force Sensing Technology)和控制算法(Control Algorithm)结合起来&a…

golang defer实现

derfer : 延迟调用,函数结束返回时执行,多个defer按照先进后出的顺序调用 原理:底层通过链表实现,每次新增的defer调用,通过头插法插入链表;defer执行时,从链表头开始遍历,相当于实…

Vue3_2024_7天【回顾上篇watch常见的后两种场景】

随笔:这年头工作不好找咯,大家有学历提升的赶快了,还有外出人多注意身体,没错我在深圳这边阳了,真的绝啊,最尴尬的还给朋友传染了!!! 之前三种的监听情况,监听…

Springboot注解知识-文字描述(学习笔记)

目录 一、Springboot相关注解1.前后端交互相关注解1.Controller1.1RestController 2.RequestMapping("/hello")3.RequestParam(name "username")4.DateTimeFormat( pattern"yyyy-MM-dd HH:mm:ss" )5.RequestBody6.PathVariable7.ResponesBody8.…

LabVIEW太赫兹波扫描成像系统

LabVIEW太赫兹波扫描成像系统 随着科技的不断发展,太赫兹波成像技术因其非电离性、高穿透性和高分辨率等特点,在生物医学、材料质量无损检测以及公共安全等领域得到了广泛的应用。然而,在实际操作中,封闭性较高的信号采集软件限制…

dm8数据迁移工具DTS

dm8数据迁移工具DTS DTS工具介绍 DM数据迁移工具提供了主流大型数据库迁移到DM、DM到DM、文件迁移到DM以及DM迁移到文件的功能。DM数据迁移工具采用向导方式引导用户通过简单的步骤完成需要的操作。 DM数据迁移工具支持: ◆ 主流大型数据库Oracle、SQLServer、MyS…

DC9 Debian和sql注入

信息收集 sudo arp-scan -l 列出局域网主机 arp-scan向局域网中所有可能的ip地址发出arp请求包,如果得到arp回应,就证明局域网中某台主机使用了该ip dc9的ip : 192.168.146.133 访问网页 cms为Debian 端口扫描 22端口是filtered 隐藏目…

详细分析Python爬虫中的xpath(附Demo)

目录 前言1. 基本知识2. 常用API3. 简易Demo 前言 关于爬虫的基本知识推荐阅读:Python爬虫从入门到应用(超全讲解) 该知识点需要提前安装相关依赖:pip install lxml 1. 基本知识 XPath(XML Path Language&#xf…

Centos添加FTP用户指定解释器为/sbin/nologin导致FTP无法登录(530 Login incorrect)的问题

Centos vsftpd 配置时,添加FTP用户时为了禁止ssh登录、仅用于FTP登录而指定解释器为/sbin/nologin,但用该用户进行FTP登录时报错 530 Login incorrect. [rootlocalhost data]# useradd ftpuser03 -d /data/ftp/ftpuser03 -s /sbin/nologin [rootlocalho…

android aidl 注册回调对象

资料一: 首先说说什么叫回调函数? 在WINDOWS中,程序员想让系统DLL调用自己编写的一个方法,于是利用DLL当中回调函数(CALLBACK)的接口来编写程序,使它调用,这个就 称为回调。在调用接…

GIt 删除某个特定commit

目的 多次commit,想删掉中间的一个/一些commit 操作方法 一句话说明:利用rebase命令的d表示移除commit的功能,来移除特定的commit # 压缩这3次commit,head~3表示从最近1次commit开始,前3个commit git rebase -i head~3rebase…

机器学习每周挑战——信用卡申请用户数据分析

数据集的截图 # 字段 说明 # Ind_ID 客户ID # Gender 性别信息 # Car_owner 是否有车 # Propert_owner 是否有房产 # Children 子女数量 # Annual_income 年收入 # Type_Income 收入类型 # Education 教育程度 # Marital_status 婚姻状况 # Housing_type 居住…