【NumPy 数组过滤、NumPy 中的随机数、NumPy ufuncs】

news2025/1/15 20:57:37

在这里插入图片描述

🤵‍♂️ 个人主页@老虎也淘气 个人主页
✍🏻作者简介:Python学习者
🐋 希望大家多多支持我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注

python之Numpy学习

  • NumPy 数组过滤
    • 创建过滤器数组
    • 直接从数组创建过滤器
  • NumPy 中的随机数
    • 什么是随机数?
    • 伪随机和真随机
    • 生成随机数
    • 生成随机浮点
    • 生成随机数组
    • 浮点数
    • 从数组生成随机数
  • NumPy ufuncs
    • 什么是 ufuncs?
    • 为什么要使用 ufuncs?
    • 什么是向量化?
  • 总结

NumPy 数组过滤

从现有数组中取出一些元素并从中创建新数组称为过滤(filtering)。

在 NumPy 中,我们使用布尔索引列表来过滤数组。

布尔索引列表是与数组中的索引相对应的布尔值列表。

如果索引处的值为 True,则该元素包含在过滤后的数组中;如果索引处的值为 False,则该元素将从过滤后的数组中排除。

实例
用索引 0 和 2、4 上的元素创建一个数组:

import numpy as np

arr = np.array([61, 62, 63, 64, 65])

x = [True, False, True, False, True]

newarr = arr[x]

print(newarr)

上例将返回 [61, 63, 65],为什么?

因为新过滤器仅包含过滤器数组有值 True 的值,所以在这种情况下,索引为 0 和 2、4。

创建过滤器数组

在上例中,我们对 True 和 False 值进行了硬编码,但通常的用途是根据条件创建过滤器数组。

实例
创建一个仅返回大于 62 的值的过滤器数组:

import numpy as np

arr = np.array([61, 62, 63, 64, 65])

# 创建一个空列表
filter_arr = []

# 遍历 arr 中的每个元素
for element in arr:
  # 如果元素大于 62,则将值设置为 True,否则为 False:
  if element > 62:
    filter_arr.append(True)
  else:
    filter_arr.append(False)

newarr = arr[filter_arr]

print(filter_arr)
print(newarr)

实例
创建一个过滤器数组,该数组仅返回原始数组中的偶数元素:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7])

# 创建一个空列表
filter_arr = []

# 遍历 arr 中的每个元素
for element in arr:
  # 如果元素可以被 2 整除,则将值设置为 True,否则设置为 False
  if element % 2 == 0:
    filter_arr.append(True)
  else:
    filter_arr.append(False)

newarr = arr[filter_arr]

print(filter_arr)
print(newarr)

直接从数组创建过滤器

上例是 NumPy 中非常常见的任务,NumPy 提供了解决该问题的好方法。

我们可以在条件中直接替换数组而不是 iterable 变量,它会如我们期望地那样工作。

实例
创建一个仅返回大于 62 的值的过滤器数组:

import numpy as np

arr = np.array([61, 62, 63, 64, 65])

filter_arr = arr > 62

newarr = arr[filter_arr]

print(filter_arr)
print(newarr)

实例
创建一个过滤器数组,该数组仅返回原始数组中的偶数元素:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7])

filter_arr = arr % 2 == 0

newarr = arr[filter_arr]

print(filter_arr)
print(newarr)

NumPy 中的随机数

什么是随机数?

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

伪随机和真随机

计算机在程序上工作,程序是权威的指令集。因此,这意味着必须有某种算法来生成随机数。

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

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

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

是的。为了在我们的计算机上生成一个真正的随机数,我们需要从某个外部来源获取随机数据。外部来源通常是我们的击键、鼠标移动、网络数据等。

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

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

生成随机数

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

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

from numpy import random

x = random.randint(100)

print(x)

生成随机浮点

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)

从数组生成随机数

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)

NumPy ufuncs

什么是 ufuncs?

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

为什么要使用 ufuncs?

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

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

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

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

dtype 定义元素的返回类型。

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

什么是向量化?

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

由于现代 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)

总结

我们的numpy学习结束。
在这里插入图片描述

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

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

相关文章

rabbitmq基础5——集群节点类型、集群节基础运维,集群管理命令

文章目录一、集群节点类型1.1 内存节点1.2 磁盘节点二、集群基础运维2.1 剔除单个节点2.1.1 集群正常踢出正常节点2.1.2 服务器异常宕机踢出节点2.1.3 集群正常重置并踢出节点2.2 集群节点版本升级2.3 集群某单节点故障恢复2.3.1 机器硬件故障2.3.2 机器掉电2.3.3 网络故障2.3.…

WPF使用快捷键 资源 输入快捷键与资源绑定 资源绑定调用操作 或keydown处理

winform直接&D就OK,还是没有winform方便。 方式1&#xff1a; 资源 输入快捷键与资源绑定 资源绑定调用操作 <Window.Resources><RoutedUICommand x:Key"download" Text"download"/></Window.Resources><Window.InputBindings>…

现在的时代不是互联网时代的延续,因为其底层逻辑已经改变

拥抱实体经济&#xff0c;绝对是当下互联网玩家们的首要选择。无论是头部的互联网企业来讲&#xff0c;还是新生的互联网玩家而言&#xff0c;它们都不约而同地将关注的焦点聚焦在了这样一个方向上。   透过这一点&#xff0c;我们可以非常明显地感受到&#xff0c;一个全新的…

Rust 语言的全链路追踪库 tracing

在一个应用程序或库的开发过程中&#xff0c;除了其本身的逻辑以外&#xff0c;开发人员还需要做很多额外的工作&#xff0c;以保证编写的代码可以正确的运行&#xff0c;或者在出错时可以快速定位到错误的位置以及原因&#xff0c;这就需要引入一些额外的工具&#xff0c;trac…

Verilog刷题HDLBits——Exams/ece241 2014 q5a

Verilog刷题HDLBits——Exams/ece241 2014 q5a题目描述代码结果题目描述 You are to design a one-input one-output serial 2’s complementer Moore state machine. The input (x) is a series of bits (one per clock cycle) beginning with the least-significant bit of …

HistoSeg:具有多损失函数的快速注意,用于数字组织学图像中的多结构分割

摘要 大多数分割网络都是基于编解码的网络结构&#xff0c;也利用了复杂的注意力模块或者Trasnsformer模块。但是这些网络在捕获相关的局部和全局特征时还不够准确。无法在多个尺度上进行准确的边界检测。因此&#xff0c;我们提出了一个编码器-解码器网络&#xff0c;快速注意…

【C++11】可变参数和lambda表达式

目录 1.可变参数模板 1.1可变参数的模板 1.2参数包的展开方式 1.21递归函数展开参数包 1.3逗号表达式展开参数包 2.STL库中的emplace相关接口 3.lambda表达式 3.1lambda的引入 3.2lambda的介绍 列表使用 lambda 表达式捕获 lambda实现swap函数 lambda表达式之间…

开放路径最短优先协议OSPF(计算机网络)

​ 目录 开放最短路径优先(Open Shortest Path First) 链路状态算法 链路状态算法 链路状态数据库(link-state database) OSPF的分组类型 类型1&#xff1a;问候(Hello)分组 类型2&#xff1a;数据库描述(Database Description)分组 类型3&#xff1a;链路状态请求(Li…

Adobe 2023全家桶12月版本更新

Adobe 2023全家桶12月版本更新 Adobe 2023 发布有两个多月了&#xff0c;您们用上了新版本吗&#xff1f;12月又迎来了一次小版本更新&#xff0c;主要更新还是对已知问题的修复&#xff0c;当然也少不了一些新功能更新。 最新的Adobe2023全家桶&#xff0c;有更强大的内容&am…

SAP ABAP——SAP简介(二)【SAP主要产品时间线】

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后…

知识图谱库汇总!——教育领域能够直接应用的知识图谱

教育领域开源的知识图谱实体 在教育领域,有许多开源的知识图谱实体可供使用。下面列出了一些例子: DBpedia:这是一个知识图谱,由 Wikipedia 的内容构建而成。DBpedia 中包含了许多关于人、地方、事物和概念的实体,并且这些实体都具有相关的属性和关系。 Wikidata:这是一个…

智牛股_第9章_CEPH_Swift+文件上传与下载

智牛股_第9章_CEPH_Swift文件上传与下载 文章目录智牛股_第9章_CEPH_Swift文件上传与下载学习目标第1章 CEPH Swift Api实践1. 目标2. 步骤3. 实现3.1 Ceph Swift Api 实践说明3.2 Ceph Swift Api 特点3.3 Ceph RGW 介绍3.4 Ceph 存储结构3.5 Ceph Swift Api 服务端的配置3.6 C…

计算机网络~物理层

一、物理层基本概念 1. 物理层接口特性 物理层解决如何在连接各种计算机的传输媒体上传输数据比特流&#xff0c;而不是指具体的传输媒体物理层主要任务&#xff1a;确定与传输媒体接口有关的一些特性(定义标准) 机械特性&#xff1a;定义屋里连接的特性&#xff0c;规定物理…

多播网络(Multicast)应用权限

本文介绍如何在苹果开发者官网申请 多播网络&#xff08;Multicast&#xff09;应用权限&#xff0c;从而正常使用 Wi-Fi 快连配网功能。本文适用于 iOS 版本的 OEM App 或者其他有相同需求的 App。 背景信息 Wi-Fi 快连配网又称 快连模式&#xff08;Easy-Connect&#xff0…

docker https 证书/多域名通配符自动续期(群晖https证书)

本文基于 freessl.cn 申请通配符域名自动续期。 使用docker的原因是为了方便可靠&#xff0c;不会因为不同的操作系统缺包无法安装 acme.sh&#xff0c;也不会在操作系统中留下灿烂内容&#xff0c;acme 版的docker 包含了运行环境。 主要步骤如下&#xff1a; 1、打开 http…

圣诞节学算法---线段树

线段树 快到圣诞节了&#xff0c;圣诞树是不是很漂亮&#xff1f;今天我们就来学习一下它的近亲的线段树 (话说这两玩意好像除了读音相似没啥关系) 引入 例题 1 给定一个数组 aaa 求数组中下标为l−rl - rl−r元素的和 看到这题大家都很容易想到用前缀和以O(n)O(n)O(n)预处…

3.2 多级放大电路的动态分析

一个 NNN 级放大电路的交流等效电路可用图3.2.1所示方框图表示。由图可知&#xff0c;放大电路中前级的输出电压就是后级的输入电压&#xff0c;即 U˙o1U˙i2\dot U_{o1}\dot U_{i2}U˙o1​U˙i2​、U˙o2U˙i3\dot U_{o2}\dot U_{i3}U˙o2​U˙i3​、⋯\cdots⋯、U˙o(N−1)U…

react笔记_07 hooks

什么是hook? 以前我们称函数组件为简单组件&#xff0c;因为函数组件是无状态的(没有state)。 而在React 16.8版本增加了 Hook&#xff0c;它可以让你在不编写 class 组件的情况下&#xff0c;也就是我们可以在函数组件中使用 state 以及其他的 React 特性。 Hook 不能在 c…

5G无线技术基础自学系列 | 5G服务完整性KPI

素材来源&#xff1a;《5G无线网络规划与优化》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 5G服务完整性KPI用来评估5G RAN中终端用…

java: 无效的目标发行版: 17 新建springBoot项目

问题 java: 无效的目标发行版: 17 详细问题 新建springBoot项目&#xff0c;对数据库配置后启动项目&#xff0c;控制台报错 java: 无效的目标发行版: 17 如下图 解决方案 查看JDK版本 &#xff08;事实上&#xff0c; 该步骤查看本机的已配置环境变量的JDK版本&#xff…