【Python入门知识】NumPy 中的随机数及ufuncs函数

news2024/9/23 12:24:25

前言

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

什么是随机数?

随机数并不意味着每次都有不同的数字。随机意味着无法在逻辑上预测的事物。

伪随机和真随机

计算机在程序上工作,程序是权威的指令集。

因此,这意味着必须有某种算法来生成随机数。

如果存在生成随机数的程序,则可以预测它,因此它就不是真正的随机数。

通过生成算法生成的随机数称为伪随机数。

我们可以生成真正的随机数吗?

是的。

为了在我们的计算机上生成一个真正的随机数,我们需要从某个外部来源获取随机数据。

外部来源通常是我们的击键、鼠标移动、网络数据等。

我们不需要真正的随机数,除非它与安全性(例如加密密钥)有关或应用的基础是随机性(例如数字轮盘赌轮)。

在本教程中,我们将使用伪随机数。

生成随机数

NumPy 提供了 random 模块来处理随机数。

实例

生成一个 0 到 100 之间的随机整数:

from numpy import random

x = random.randint(100)

print(x)

运行实例

更多python资料、源码、教程: 点击此处跳转文末名片获取

生成随机浮点

random 模块的 rand() 方法返回 0 到 1 之间的随机浮点数。

实例

生成一个 0 到 100 之间的随机浮点数:

from numpy import random

x = random.rand()

print(x)

运行实例

生成随机数组

在 NumPy 中,我们可以使用上例中的两种方法来创建随机数组。

整数

randint() 方法接受 size 参数,您可以在其中指定数组的形状。

实例

生成一个 1-D 数组,其中包含 5 个从 0 到 100 之间的随机整数:

from numpy import random

x=random.randint(100, size=(5))

print(x)

运行实例

实例

生成有 3 行的 2-D 数组,每行包含 5 个从 0 到 100 之间的随机整数:

from numpy import random

x = random.randint(100, size=(3, 5))

print(x)

运行实例

浮点数

rand() 方法还允许您指定数组的形状。

实例

生成包含 5 个随机浮点数的 1-D 数组:

from numpy import random

x = random.rand(5)

print(x)

运行实例

实例

生成有 3 行的 2-D 数组,每行包含 5 个随机数:

from numpy import random

x = random.rand(3, 5)

print(x)

运行实例

更多python资料、源码、教程: 点击此处跳转文末名片获取

从数组生成随机数

choice() 方法使您可以基于值数组生成随机值。

choice() 方法将数组作为参数,并随机返回其中一个值。

实例

返回数组中的值之一:

from numpy import random

x = random.choice([3, 5, 7, 9])

print(x)

运行实例

choice() 方法还允许您返回一个值数组。

请添加一个 size 参数以指定数组的形状。

实例

生成由数组参数(3、5、7 和 9)中的值组成的二维数组:

from numpy import random

x = random.choice([3, 5, 7, 9], size=(3, 5))

print(x)

运行实例

什么是 ufuncs?

ufuncs 指的是“通用函数”(Universal Functions),它们是对 ndarray 对象进行操作的 NumPy 函数。

为什么要使用 ufuncs?

ufunc 用于在 NumPy 中实现矢量化,这比迭代元素要快得多。

它们还提供广播和其他方法,例如减少、累加等,它们对计算非常有帮助。

ufuncs 还接受其他参数,比如:

  • where 布尔值数组或条件,用于定义应在何处进行操作。

  • dtype 定义元素的返回类型。

  • out 返回值应被复制到的输出数组。

更多python资料、源码、教程: 点击此处跳转文末名片获取

什么是向量化?

将迭代语句转换为基于向量的操作称为向量化。

由于现代 CPU 已针对此类操作进行了优化,因此速度更快。

对两个列表的元素进行相加:

  • list 1: [1, 2, 3, 4]

  • list 2: [4, 5, 6, 7]

一种方法是遍历两个列表,然后对每个元素求和。

实例

如果没有 ufunc,我们可以使用 Python 的内置 zip() 方法:

x = [1, 2, 3, 4]
y = [4, 5, 6, 7]
z = []

for i, j in zip(x, y):
  z.append(i + j)
print(z)

运行实例

对此,NumPy 有一个 ufunc,名为 add(x, y),它会输出相同的结果。

实例

通过 ufunc,我们可以使用 add() 函数:

import numpy as np

x = [1, 2, 3, 4]
y = [4, 5, 6, 7]
z = np.add(x, y)

print(z)

运行实例

尾语 💝

要成功,先发疯,下定决心往前冲!

学习是需要长期坚持的,一步一个脚印地走向未来!

未来的你一定会感谢今天学习的你。

—— 心灵鸡汤

本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 😝

👇问题解答 · 源码获取 · 技术交流 · 抱团学习请联系👇

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

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

相关文章

2路 QSFP,40G 光纤的数据实时采集(5GByte/s 带宽)板卡设计原理图 -PCIE732

板卡概述 PCIE732 是一款基于 PCIE 总线架构的高性能数据传输卡,板卡具有 1 个 PCIex8 主机接口、2 个 QSFP40G 光纤接口,可以实现 2 路 QSFP 40G 光纤的数据实时采集、传输。板卡采用 Xilinx 的高性 能 Kintex UltraScale 系列 FPGA 作为实时处理器…

【鲁棒优化、无功优化】两阶段鲁棒优化的主动配电网动态无功优化【IEEE33节点】(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

网曝快手在离职证明上写:如需背调,只能通过公司指定邮箱,其他渠道均不认可!如何捍卫自己的权益?...

许多公司都喜欢用离职证明拿捏打工人,最近有网友曝光快手在离职证明上做文章,在离职证明上写:如需背调,只能通过公司指定邮箱xxxxkuaishou.com,其他渠道均不认可! 楼主问:这种情况如何捍卫自己的…

camunda脚本如何使用

一、camunda脚本有什么用途 在Camunda中,脚本是一种灵活的方式,可以用于在流程定义和表单中编写自定义逻辑。使用脚本,您可以编写JavaScript、Groovy、Python、Ruby等脚本语言中的代码,以实现各种功能。 以下是Camunda脚本的一些…

Shell脚本快速入门

Shell脚本快速入门 1 Hello World2 Shell 变量3 Shell 传递参数4 Shell 基本运算符5 Shell echo命令5 Shell printf 命令6 Shell test 命令7 Shell 流程控制8 Shell 函数9 Shell 输入/输出重定向10 Shell 文件包含参考 1 Hello World 编写脚本文件 test.sh #!/bin/bash echo …

用思科和华为的设备分别完成【单臂路由】的配置

一 什么是单臂路由: 单臂路由(router-on-a-stick)是指在路由器的一个接口上通过配置子接口(或“逻辑接口”,并不存在真正的物理接口)的方式,实现原来相互隔离的不同VLAN(虚拟…

并发编程06:volatile与JMM

文章目录 6.1 被volatile修饰的变量有两大特点6.2 内存屏障(面试重点)6.2.1 生活case6.2.2 是什么6.2.3 内存屏障分类6.2.4 困难内容 6.3 volatile特性6.3.1 保证可见性6.3.2 没有原子性6.3.3 指令禁重排 6.4 如何正确使用volatile6.5 本章最后的小总结6…

运算符重载三大补充(前置后置,操作数与参数顺序,指针参数权限),const修饰成员函数,对>> <<的重载与友元函数声明

TIPS 构造函数析构函数拷贝构造函数运算符重载赋值运算符重载当代码当中的运算符连接的全是内置类型的时候,由于内置类型,它是知道该怎么去进行运算的,所以说会直接转化为指令,然后但凡有一个不是内置类型,而是属于自…

JS 实现区块链添加可视化功能

JS 实现区块链添加可视化功能 学习的最后一部分了,完整的资源在这里:https://download.csdn.net/download/weixin_42938619/87765530,有需求的可以自取。 最后一部分是增加一些可视化的功能,完整实现后如下: HTML 部…

基于yolov7开发构建学生课堂行为检测识别系统

yolov7也是一款非常出众的目标检测模型,在我之前的文章中也有非常详细的教程系列的文章,感兴趣的话可以自行移步阅读即可。 《基于YOLOV7的桥梁基建裂缝检测》 《YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程》 《基于YOLOv7融合…

windows 编译 opencv

编译需要的基础工具 #cmake是配置构建工具,mingw是编译工具 cmake CMake是一款跨平台的编译管理工具,可以自动生成各种不同编译环境(如Makefile、Visual Studio Solution等),从而实现在不同平台上进行代码编译的目的…

PLC与无线开关量测控终端之间Modbus通信实例

本方案是基于Modbus RTU协议下实现的1主多从自组网无线通信形式,主站为S7-1200 PLC,DTD433H作为从站。DTD433H具备输入和输出开关量信号功能,信号传输方向由用户原系统主从设备所实现的功能决定。方案中采用无线开关量信号测控终端DTD433H与欧…

python调用海康sdk报错问题

sdk参考: (68条消息) Python调用海康威视网络相机_调用海康SDK_python 海康威视_有一点点麻瓜的博客-CSDN博客https://blog.csdn.net/yinweizhehd/article/details/118722052 报错1: 生成解决方案的时候,显示LNK2001:无法解析的…

【AI大模型】SparkDesk讯飞星火认知大模型震撼发布,国产AI技术再创新高!

文章目录 前言SparkDesk讯飞星火认知大模型简介语言理解知识问答逻辑推理数学题解答代码理解与编写亲自体验写在最后 前言 5月6日,讯飞星火认知大模型成果发布会在安徽合肥举行。科大讯飞董事长刘庆峰、研究院院长刘聪发布讯飞星火认知大模型,现场实测大…

C++面向对象编程

面向对象编程 面向对象编程和面向过程编程面向过程面向对象 类型设计类的成员函数对象的创建和使用C对象模型this指针构造函数和析构函数构造函数定义和使用析构函数的定义和使用 对象的生存周期拷贝构造函数深拷贝与浅拷贝 运算符的重载 面向对象编程和面向过程编程 面向过程…

设计模式之【适配器模式】,两个人之间确实需要月老的搭线~

文章目录 一、什么是适配器模式1、适配器模式使用场景2、代理、桥接、装饰器、适配器 4 种设计模式的区别3、适配器模式结构 二、类适配器1、实例 三、对象适配器1、实例 四、接口适配器1、实例 五、源码中的应用 一、什么是适配器模式 适配器模式(Adapter Design …

第2天学习Docker——Docker安装

一、前言 Docker 是一个用于开发、传送和运行应用程序的开放平台。Docker 使您能够将应用程序与基础设施分开,以便您可以快速交付软件。使用 Docker,您可以像管理应用程序一样管理基础设施。通过利用 Docker 的快速交付、测试和部署代码的方法&#xff0…

vue3学习一 setup

vue3中没有 data 等配置项, 并且它的引入方式也不是像vue2中的 import vue就可以了, 而是用到什么再引入什么, 其中 setup() 函数, 是最大的区别 vue3中的 setup 有点像vue2中的 data , 但又不完全是 setup 会在 生命周期create…

关于C语言

C99是啥 很多书籍开篇会突然提到C99标准,因此这里搜了一下。 C99是C语言的官方标准第二版。1999年12月1日,国际标准化组织和国际电工委员会旗下的C语言标准委员会正式发布了这个标准文件 ; C99是在C89和C90的基础上发展起来的,增加…

独立站平台选哪个好?5个独立站平台优缺点分析

选择适合自己的独立站平台需要综合考虑多个方面的因素,包括平台的优缺点、自己的需求和预算等因素。下面是几个常见的独立站平台的优缺点分析供您参考: 一、Shopify: 优点:简单易用,拥有丰富的主题和应用程序&#xf…