Python和numpy相关函数

目录

  • 一、python中变量前面有个*
  • 二、numpy.prod
  • 三、numpy.savez
  • 四、 arr[..., ::-1]
  • 五、 yield
  • 六、 string.join()
  • 七、 numpy.random.choice()

一、python中变量前面有个*

在Python中,变量前面的星号(*)有多种用法,主要与函数参数或解包序列有关。

1、在函数参数中,星号(*)用来表示任意多个参数,这些参数会被当作元组传递。例如:

def fun(*args):for i in args:print(i)fun(1, 2, 3, 4)

2、在函数参数中,星号(*)还可以用来解包序列。例如:

def fun(a, b, c, d):print(a, b, c, d)args = (1, 2, 3, 4)
fun(*args)

3、在函数参数中,星号(*)还可以与命名参数,或者字典一起使用。例如:

def fun(*args, a=1):print(args, a)fun(1, 2, 3, a=4)def fun(*args, **kwargs):print(args, kwargs)fun(1, 2, 3, a=4, b=5)

4、 在解包列表或元组时,星号(*)也可以用来解包选定项。例如:

lst = [1, 2, 3, 4, 5]
a, *b, c = lst
print(a, b, c)

二、numpy.prod

计算元素和

print(np.prod([[1., 2.], [3., 4.]], axis=0))按列计算元素和
print(np.prod([[1., 2.], [3., 4.]], axis=1))按行计算元素和
print(np.prod([[1., 2.], [3., 4.]], axis=0))计算所有元素和

三、numpy.savez

numpy.savez 是 NumPy 库中的一个函数,用于将多个数组保存到以 .npz 为扩展名的文件中。与 numpy.save 函数不同,后者一次只能保存一个数组到一个 .npy 文件中,numpy.savez 允许你一次性保存多个数组,并将它们作为字典的键值对存储在 .npz 文件中。这样做的好处是可以在一个文件中方便地存储和加载多个数组,而不需要为每个数组创建单独的文件。

import numpy as np  # 创建一些数组  
a = np.array([[1, 2, 3], [4, 5, 6]])  
b = np.array([1, 2, 3, 4, 5])  
c = np.array([6, 7, 8])  # 使用 savez 保存多个数组  
np.savez('my_arrays.npz', a=a, b=b, c=c)  # 或者使用 *args 方式,不指定键名(数组变量名将作为键名)  
# np.savez('my_arrays_no_keys.npz', a, b, c)

四、 arr[…, ::-1]

在Python中,表达式arr[…, ::-1]通常用于NumPy数组或兼容NumPy索引的数组(如PyTorch张量)上,用于对数组进行切片操作。这个表达式的目的是沿着数组的最后一个维度(或轴)反转元素的顺序。

这里的…是NumPy引入的省略号(ellipsis),它用于表示在指定位置选择多个未明确指出的维度。在这个上下文中,…意味着“选择所有前面的维度”,而::-1是一个切片操作,表示“从末尾开始到开头,步长为-1”,即反转当前维度的元素顺序。

假设我们有一个形状为(3, 4, 3)的三维NumPy数组,代表三个颜色通道(RGB)的图像批次,每个图像的大小为4x3像素。如果我们想要将每个图像的RGB通道顺序更改为BGR,我们可以使用arr[…, ::-1]来实现这一点。

python
import numpy as np  # 创建一个形状为(3, 4, 3)的随机数组,模拟RGB图像批次  
arr = np.random.randint(0, 256, size=(3, 4, 3), dtype=np.uint8)  # 打印原始数组的形状和一部分内容  
print("Original shape:", arr.shape)  
print("Original array (first image):\n", arr[0])  # 使用arr[..., ::-1]反转最后一个维度(颜色通道)  
arr_bgr = arr[..., ::-1]  # 打印反转后数组的形状和一部分内容  
print("Modified shape:", arr_bgr.shape)  # 形状保持不变  
print("Modified array (first image, now in BGR):\n", arr_bgr[0])

在这个例子中,arr[…, ::-1]会保持数组的形状不变(因为我们只反转了最后一个维度),但是会改变最后一个维度的元素顺序,从而将RGB通道更改为BGR通道。

这种操作在处理图像数据时非常有用,因为不同的图像处理库和框架可能期望不同的颜色通道顺序。例如,OpenCV默认使用BGR顺序,而PIL(Python Imaging Library)和matplotlib则使用RGB顺序。

五、 yield

在Python中,yield 关键字用于从函数中返回一个生成器(generator)。生成器是一个可以记住上一次返回位置的对象,并在下一次迭代时从该位置继续执行。这使得它们非常适合用于需要逐个处理大量数据的场景,因为它们可以按需生成数据,从而节省内存。

当你调用一个包含 yield 的函数时,该函数不会立即执行其代码,而是返回一个迭代器(即生成器)。然后,你可以通过迭代这个生成器来逐步执行函数中的代码。每次迭代时,yield 语句会“暂停”函数的执行,并返回紧随其后的值给迭代器的调用者。当迭代器再次请求下一个值时,函数会从上次暂停的位置继续执行,直到遇到下一个 yield 语句或函数结束。
下面是一个简单的使用 yield 的例子,该函数生成一个斐波那契数列(Fibonacci sequence):


python
def fibonacci(n):  a, b = 0, 1  count = 0  while count < n:  yield a  a, b = b, a + b  count += 1  
for num in fibonacci(10):  print(num)

在这个例子中,fibonacci 函数是一个生成器函数,它使用 yield 来逐个返回斐波那契数列中的数。当我们使用 for 循环迭代 fibonacci(10) 时,函数会在每次迭代时执行到下一个 yield 语句,并返回当前的 a 值。当函数内部的状态(即 a 和 b 的值以及 count)被保存起来,并在下一次迭代时恢复,直到生成了 n 个数为止。
注意事项:
使用 yield 的函数会返回一个生成器对象,而不是一次性返回所有值。
生成器只能迭代一次。一旦生成器迭代完成,它就不能再次从头开始迭代。
生成器非常适合用于实现迭代器协议,因为它们提供了惰性求值(lazy evaluation)的能力,即只有在需要时才计算值。
在生成器中,return 语句会立即停止迭代,但可以通过 return 语句返回一个值给迭代器的 StopIteration 异常(在Python 3.3及以后版本中,如果生成器因为 return 语句而终止,则 return 语句后的值(如果有的话)会被用作 StopIteration 异常的 value 属性)。如果生成器中没有 return 语句,或者 return 语句没有值,则迭代会在自然结束时停止。

六、 string.join()

在Python中,string.join() 方法用于将序列(如列表、元组)中的元素以指定的字符连接生成一个新的字符串。

separator = ', '  
sequence = ['apple', 'banana', 'cherry']  
result = separator.join(sequence)  
print(result)  # 输出: apple, banana, cherry

七、 numpy.random.choice()

np.random.choice 是 NumPy 库中的一个函数,用于从给定的一维数组中随机抽取元素。这个函数非常灵活,允许你指定抽取元素的数量、是否允许替换(即重复抽取同一元素)以及根据给定的概率分布进行抽取。


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

参数:
a:一维数组或整数。如果是一维数组,则从该数组中抽取元素;如果是整数,则在该整数的范围内(0 到 a-1)抽取整数。
size:整数或整数元组。表示输出的形状。如果给定,则输出数组的形状将是 size,否则输出一个元素或一个数组(如果 replace=False 且 a 的长度小于 size,则可能引发错误)。
replace:布尔值。如果为 True,则从数组中随机抽取元素,允许替换(即可以重复抽取同一元素)。如果为 False,则进行不放回抽样。
p:一维数组。与 a 的长度相同,表示从 a 中抽取每个元素的概率。这些概率不需要归一化,因为 np.random.choice 会自动进行归一化。但是,如果 p 的总和不为 1(在浮点数精度范围内),则会引发警告。
返回值是一个数组,其形状由 size 参数指定,包含了从 a 中根据 p(如果提供)指定的概率分布随机抽取的元素。

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

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

相关文章

Spring Boot Vue 毕设系统讲解 3

目录 项目配置类 项目中配置的相关代码 spring Boot 拦截器相关知识 一、基于URL实现的拦截器&#xff1a; 二、基于注解的拦截器 三、把拦截器添加到配置中&#xff0c;相当于SpringMVC时的配置文件干的事儿&#xff1a; 项目配置类 项目中配置的相关代码 首先定义项目认…

实例分割:深度学习在图像识别中的突破

标题&#xff1a;实例分割&#xff1a;深度学习在图像识别中的突破 实例分割是计算机视觉领域中的一项高级任务&#xff0c;它不仅识别图像中的多个对象&#xff0c;还精确地定位每个对象的边界。这项技术是目标检测和语义分割的结合&#xff0c;能够区分同类对象中的个体差异…

【亲测解决】No module named _cffi_backend

微信公众号&#xff1a;leetcode_algos_life&#xff0c;代码随想随记 小红书&#xff1a;412408155 CSDN&#xff1a;https://blog.csdn.net/woai8339?typeblog &#xff0c;代码随想随记 GitHub: https://github.com/riverind 抖音【暂未开始&#xff0c;计划开始】&#xf…

FPGA之 串口UART通信

FPGA之串口UART通信 1. UART发送模块&#xff08;Transmitter&#xff09;2. UART接收模块&#xff08;Receiver&#xff09;3. testbench4. 边沿检测电路 串口&#xff08;Universal Asynchronous Receiver/Transmitter&#xff0c;UART&#xff09;是一种串行通信协议&#x…

通义千问Qwen-VL-Chat大模型本地部署(一)

目录 前言 环境准备 软件安装 其它库安装启动项目 FASTAPI 小结 前言 人工智能大模型是一种能够利用大数据和神经网络来模拟人类思维和创造力的人工智能算法。它利用海量的数据和深度学习技术来理解、生成和预测新内容&#xff0c;通常情况下有数十亿乃至数百亿个参数&#xf…

什么?这动物图片可以上国家地理?

stable difussion中大部分的模型都是关于人的,今天交给大家一些不一样的:如何生成动物图片。在这篇文章中我们将会学到如何生成逼真的动物&#xff0c;可爱的动物&#xff0c;还有幻想中的动物。 准备工作 当然前提是你需要一个SD的软件&#xff0c;你可以用本地的SD webUI或…

关于CM4内核的单片机使用sprintf格式化浮点数导致程序跑飞的问题

问题现象 基于freeRTOS和Contex-M4内核的单片机&#xff0c;在使用sprintf格式化浮点数时&#xff0c;由于打开了看门狗复位&#xff0c;导致程序频繁重启&#xff0c;不开看门狗复位&#xff0c;程序就会卡死。而同样的程序在切换到Contex-M3内核的单片机时&#xff0c;就能正…

解析 unstructured pdfminer_utils.py rect_to_bbox 坐标转换函数

解析 unstructured pdfminer_utils.py rect_to_bbox 坐标转换函数 1. 函数定义2. 函数说明3. 函数实现举例说明总结 今天,我们来学习一个有趣的Python函数。这个函数可以帮助我们转换PDF文档中的坐标。虽然听起来很复杂,但是我们可以通过一个简单的例子来理解它。 1. 函数定义…

[Spring] SpringBoot基本配置与快速上手

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

Python中的魔术方法(如__init__、__str__等)的概念以及它们的作用。

Python中的魔术方法&#xff08;也称为特殊方法或双下划线方法&#xff09;是Python内置的一些具有特殊意义的方法。这些方法在Python的类定义中用于实现特定的功能&#xff0c;如对象初始化、属性访问、字符串表示、算术运算等。下面列举并解释几个常见的魔术方法&#xff1a;…

企业如何做好数据防泄密丨十个措施杜绝泄密事件

在当今数字化时代&#xff0c;信息泄露对企业构成了前所未有的威胁。企业的创新成果、专利技术和商业机密是其竞争力的核心。防止泄密可以确保这些关键资产不被非法复制或盗用。 客户数据是企业的宝贵资源。保护客户隐私不被泄露&#xff0c;不仅是法律要求&#xff0c;更是赢…

兼容问题---ios底部的安全距离css设置

在H5上适配安全区域&#xff1a;采用viewportenvconstant方案。 具体操作如下&#xff1a; 1. 需要将viewport设置为cover&#xff0c;env和constant才能生效。设置代码如下&#xff1a; <meta name"viewport" content"widthdevice-width,initial-scale1.…

两位软件工程师创业,开发出一款软件质量保证自主AI代理,融资总额超3000万美元

编译整理&#xff5c;TesterHome社区 来源&#xff5c;TechCrunch 随着生成式人工智能&#xff08;generative AI&#xff09;的出现&#xff0c;人工智能应用正在改变和重塑各行各业&#xff0c;并改变人们的工作方式。软件开发也不例外。 总部位于旧金山和东京的初创公司Aut…

前端导出pdf

async generatePDF() {const element this.$refs.contentToPrint; // 你想要转换成PDF的DOM元素// 使用html2canvas将DOM元素转换成canvasconst canvas await html2canvas(element);const imgData canvas.toDataURL(image/png);// 创建PDF并添加图片const pdf new jsPDF({o…

自动化立体仓库设计步骤:7步

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 完整版文件和更多学习资料&#xff0c;请球友到知识星球【智能仓储物流技术研习社】自行下载 这份文件是关于自动化立体仓库设计步骤的详细指南&#xff0c;其核心内容包括以下几个阶…

怎么区分服务器的硬盘是ssd还是hdd?

区分服务器的硬盘是SSD还是HDD可以通过多种方法进行&#xff0c;包括操作系统内置工具、命令行工具以及第三方软件。以下是几种常见的方法&#xff1a; 操作系统内置工具 Windows 1.任务管理器 打开任务管理器(Ctrl Shift Esc)。 点击“性能”选项卡。 选择“磁盘”项。通常会…

孟德尔随机化与痛风4

写在前面 今天阅读的文献是多种暴露与某结局的孟德尔随机化&#xff0c;算是以量取胜了。 The effect of metabolism-related lifestyle and clinical risk factors on digestive system cancers in East Asian populations: a two-sample Mendelian randomization analysis …

淘宝商品评论电商API接口:帮你轻松挑选优质商品

随着互联网的快速发展&#xff0c;电子商务应运而生&#xff0c;并在短时间内取得了巨大的成功。其中&#xff0c;淘宝作为我国最大的在线购物平台之一&#xff0c;每天都有数以亿计的商品交易发生。然而&#xff0c;面对海量的商品信息&#xff0c;如何挑选出优质商品成为了一…

800 元打造家庭版 SOC 安全运营中心

今天,我们开始一系列新的文章,将从独特而全面的角度探索网络安全世界,结合安全双方:红队和蓝队。 这种方法通常称为“紫队”,集成了进攻和防御技术,以提供对威胁和安全解决方案的全面了解。 在本系列的第一篇文章中,我们将指导您完成以 100 欧元约800元左右的预算创建…

HTML最快速最简单

1、HTML 文档由 HTML 元素定义 2、HTML 元素语法 HTML 元素以开始标签起始&#xff0c;HTML 元素以结束标签终止空元素在开始标签中进行关闭&#xff08;以开始标签的结束而结束&#xff09;元素的内容是开始标签与结束标签之间的内容 3、空元素 空元素&#xff08;Void Ele…