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

2024-04-07 07:36

本文主要是介绍菜鸟笔记-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 的数据类型相同(或兼容)。

这篇关于菜鸟笔记-Numpy函数-full/random.randint/random.choice的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/882003

相关文章

hdu1171(母函数或多重背包)

题意:把物品分成两份,使得价值最接近 可以用背包,或者是母函数来解,母函数(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v) 其中指数为价值,每一项的数目为(该物品数+1)个 代码如下: #include<iostream>#include<algorithm>

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

C++操作符重载实例(独立函数)

C++操作符重载实例,我们把坐标值CVector的加法进行重载,计算c3=c1+c2时,也就是计算x3=x1+x2,y3=y1+y2,今天我们以独立函数的方式重载操作符+(加号),以下是C++代码: c1802.cpp源代码: D:\YcjWork\CppTour>vim c1802.cpp #include <iostream>using namespace std;/*** 以独立函数

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

函数式编程思想

我们经常会用到各种各样的编程思想,例如面向过程、面向对象。不过笔者在该博客简单介绍一下函数式编程思想. 如果对函数式编程思想进行概括,就是f(x) = na(x) , y=uf(x)…至于其他的编程思想,可能是y=a(x)+b(x)+c(x)…,也有可能是y=f(x)=f(x)/a + f(x)/b+f(x)/c… 面向过程的指令式编程 面向过程,简单理解就是y=a(x)+b(x)+c(x)

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓