Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >NumPy 舍入小数、对数、求和和乘积运算详解

NumPy 舍入小数、对数、求和和乘积运算详解

原创
作者头像
小万哥
发布于 2024-06-12 12:50:11
发布于 2024-06-12 12:50:11
18000
代码可运行
举报
文章被收录于专栏:程序人生丶程序人生丶
运行总次数:0
代码可运行

舍入小数

在 NumPy 中,主要有五种方法来舍入小数:

截断

去除小数部分,并返回最接近零的浮点数。使用 trunc()fix() 函数。

示例:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import numpy as np

arr = np.trunc([-3.1666, 3.6667])

print(arr)

相同的示例,使用 fix()

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import numpy as np

arr = np.fix([-3.1666, 3.6667])

print(arr)

四舍五入

around() 函数在数字大于或等于 5 时将前面的数字或小数部分加 1。

例如:将数字四舍五入到 1 个小数位,3.16666 是 3.2。

示例:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import numpy as np

arr = np.around(3.1666, 2)

print(arr)

向下取整

floor() 函数将小数舍入到最接近的较低整数。

例如:3.166 的 floor 是 3。

示例:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import numpy as np

arr = np.floor([-3.1666, 3.6667])

print(arr)

向上取整

ceil() 函数将小数舍入到最接近的较高整数。

例如:3.166 的 ceil 是 4。

示例:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import numpy as np

arr = np.ceil([-3.1666, 3.6667])

print(arr)

NumPy 对数

NumPy 提供了在底数为 2、e 和 10 的情况下执行对数运算的函数。

我们还将探讨如何通过创建自定义的 ufunc 来以任意底数取对数。

如果无法计算对数,所有的对数函数都会在元素中放置 -infinf

底数为 2 的对数

使用 log2() 函数执行底数为 2 的对数运算。

示例:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import numpy as np

arr = np.arange(1, 10)

print(np.log2(arr))

注意:arange(1, 10) 函数返回一个从 1(包括)到 10(不包括)的整数数组。

底数为 10 的对数

使用 log10() 函数执行底数为 10 的对数运算。

示例:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import numpy as np

arr = np.arange(1, 10)

print(np.log10(arr))

自然对数,即底数为 e 的对数

使用 log() 函数执行底数为 e 的对数运算。

示例:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import numpy as np

arr = np.arange(1, 10)

print(np.log(arr))

任意底数的对数

NumPy 不提供任意底数的对数函数,所以我们可以使用 frompyfunc() 函数结合内置函数 math.log(),它有两个输入参数和一个输出参数:

示例:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
from math import log
import numpy as np

nplog = np.frompyfunc(log, 2, 1)

print(nplog(100, 15))

NumPy 求和

求和和加法有什么区别?

加法是在两个参数之间进行操作,而求和是在 n 个元素上进行操作。

示例:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([1, 2, 3])

newarr = np.add(arr1, arr2)

print(newarr)

返回:[2 4 6]

示例

arr1arr2 中的值进行求和:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([1, 2, 3])

newarr = np.sum([arr1, arr2])

print(newarr)

返回:12

沿轴求和

如果指定 axis=1,则 NumPy 将对每个数组中的数字进行求和。

示例

在以下数组上沿第一个轴执行求和:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([1, 2, 3])

newarr = np.sum([arr1, arr2], axis=1)

print(newarr)

返回:[6 6]

累积求和

累积求和意味着部分地对数组中的元素进行相加。

例如:[1, 2, 3, 4] 的部分和将是 [1, 1+2, 1+2+3, 1+2+3+4] = [1, 3, 6, 10]

使用 cumsum() 函数执行部分求和。

示例

在以下数组中执行累积求和:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import numpy as np

arr = np.array([1, 2, 3])

newarr = np.cumsum(arr)

print(newarr)

返回:[1 3 6]

NumPy 乘积

要找到数组中元素的乘积,使用 prod() 函数。

示例:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import numpy as np

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

x = np.prod(arr)

print(x)

返回:24,因为 1*2*3*4 = 24

示例

找到两个数组中元素的乘积:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import numpy as np

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

x = np.prod([arr1, arr2])

print(x)

返回:40320,因为 1*2*3*4*5*6*7*8 = 40320

沿轴的乘积

如果指定 axis=1,则 NumPy 将返回每个数组的乘积。

示例

在以下数组上沿第一个轴执行乘积:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import numpy as np

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

newarr = np.prod([arr1, arr2], axis=1)

print(newarr)

返回:[24 1680]

累积乘积

累积乘积意味着部分地进行乘法。

例如:[1, 2, 3, 4] 的部分乘积是 [1, 1*2, 1*2*3, 1*2*3*4] =1, 2, 6, 24`

使用 cumprod() 函数执行部分乘积。

示例

对以下数组中所有元素进行累积乘积:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import numpy as np

arr = np.array([5, 6, 7, 8])

newarr = np.cumprod(arr)

print(newarr)

返回:[5 30 210 1680]

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎点赞、收藏、关注

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【C++】基础入门
C++兼容C语⾔绝⼤多数的语法,所以C语⾔实现的hello world依旧可以运⾏,C++中需要把定义⽂件代码后缀改为.cpp,vs编译器看到是.cpp就会调⽤C++编译器编译,linux下要⽤g++编译,不再是gcc。当然C++有⼀套⾃⼰的输⼊输出,严格说C++版本的hello world应该是这样写的。(后续会讲到)。如下:
用户11375356
2024/11/22
730
【C++】基础入门
C++基础入门
C++兼容C语⾔绝⼤多数的语法,所以C语⾔实现的helloworld依旧可以运⾏,C++中需要把定义⽂件 代码后缀改为.cpp,vs编译器看到是.cpp就会调⽤C++编译器编译,linux下要⽤g++编译,不再是gcc
逆向-落叶
2024/10/28
1280
C++基础入门
今天你学C++了吗——C++启航之入门知识
C++的起源可以追溯到1979年,当时Bjarne Stroustrup(本贾尼·斯特劳斯特卢普(C++祖师爷)(这里翻译的名字不同的地方可能有差异) 在贝尔实验室从事计算机科学和软件工程的研究工作。面对项目中复杂的软件开 发任务,特别是模拟和操作系统的开发工作,他感受到了现有语言(如C语言)在表达能力、可维护性 和可扩展性方面的不足。
用户11352420
2024/11/20
690
今天你学C++了吗——C++启航之入门知识
【C++】C++基础
下面只是看一下C++有多少关键字,不对关键字进行具体的讲解。后面对应文章会详细讲解。
ZLRRLZ
2024/12/13
1250
【C++】C++基础
【C++】入门基础(上)
提示:第一个链接不是C++官方文档,标准也只是更新到C++11,但是以头文件形式呈现,内容比较易看好懂,后两个链接分别是C++官方文档的中文版和英文版,信息很全,更新到了最新的C++标准,没有第一个那么易看,各有优点,相互结合使用即可。
云边有个稻草人
2024/10/21
870
【C++】入门基础(上)
C++入门的基础
为什么会出现C++呢?为什么C++的关键字和C语言相对比起来,有着不少的增加? 其实想要搞明白为什么会出现这种状况,首先要明白的是C++是祖师爷用C语言的过程中,饱受C语言中一些限制的诟病,在C语言的基础上增加的一个更牛的系统。
薛定谔方程难
2024/02/05
1790
C++入门的基础
C++ 入门基础:开启编程之旅
C++ 是一种高效、灵活且功能强大的编程语言,广泛应用于系统软件、游戏开发、嵌入式系统、科学计算等多个领域。作为 C 语言的扩展,C++ 不仅继承了 C 语言的过程化编程特性,还增加了面向对象编程(OOP)的支持,使得代码更加模块化、易于管理和复用。本文将带你走进 C++ 的世界,从基础语法开始,逐步掌握这门强大的编程语言。
小志biubiu
2025/02/27
670
C++ 入门基础:开启编程之旅
C++入门
        C++ 也就是 c语言plus plus版本 所以兼容很多C语言内容依然可以使用。
2024/08/06
1170
C++入门
在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。
waves浪游
2024/11/01
1140
C++入门
c++基础(1)
c语言是结构化和模块化的语言,用于处理规模较小的程序。当问题需要高度抽象和建模时,c语言不适合。c++是基于c语言产生的,既可以进行c语言过程化程序设计,又可以以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。
用户11039545
2024/07/17
1060
c++基础(1)
C++入门(1)
ps :下面我们只是看一下 C++ 有多少关键字,不对关键字进行具体的讲解。后面我们学到以后再
用户10923087
2024/01/23
1660
C++入门(1)
【C++】C++入门
C语言是结构化和模块化的语言,适合处理小规模的程序,对于复杂的问题、规模较大的程序,需要高度的抽象和建模时,C语言则不合适,这时出现了面向对象的思想,支持面向对象的程序设计语言应运而生
s-little-monster
2024/06/25
2500
【C++】C++入门
【C++】入门基础(为C语言填坑)
C语言是结构化和模块化的编程语言,适合处理较小规模的程序,对于复杂、规模较大的问题,需要高度的抽象和建模时,C++更加合适。 C++兼容C语言绝多数的语法,C++是在C语言的基础上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式等。 C语言有一些语法的不足,C++对C语言设计不合理的地方进行了优化,C++既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。
_小羊_
2024/10/16
800
【C++】入门基础(为C语言填坑)
C++前期概念(重)
在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存 在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化, 以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。
ljw695
2024/10/18
820
C++前期概念(重)
【C++】——入门基础知识超详解
在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。
小李很执着
2024/06/15
1380
【C++】——入门基础知识超详解
【C++】——入门基础知识
C++是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式等。熟悉C语言之后,对C++学习有一定的帮助: 1. 补充C语言语法的不足,以及C++是如何对C语言设计不合理的地方进行优化的,比如:作用 域方面、IO方面、函数方面、指针方面、宏方面等。 2. 为后续类和对象学习打基础。
小李很执着
2024/06/15
1340
【C++】——入门基础知识
C++入门基础,看这篇就足够了!
C++是在C语言的基础上,又容纳了许多面向对象的编程思想,并增加了许多有用的库,以及编程范式,如果以及学习C语言后,对C++的学习也是很有帮助的。 C++补充C语言语法的不足,以及C++是如何对C语言设计不合理的地方进行优化的,比如:作用域方面,IO方面,函数方面,指针方面,宏方面
Yui_
2024/10/16
5020
C++入门基础,看这篇就足够了!
C++基础入门篇
        首先C++兼容c语言,所以由c语言实现的内容仍然可以在C++中实现,但是c语言的文件后缀是.c但是C++的后缀是.cpp。vs对于cpp文件使用C++编译器编译,linux需要用g++编译而不是gcc
2024/11/21
890
C++入门
C++是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式 等。熟悉C语言之后,对C++学习有一定的帮助,本章节主要目标: 1. 补充C语言语法的不足,以及C++是如何对C语言设计不合理的地方进行优化的,比如:作用 域方面、IO方面、函数方面、指针方面、宏方面等。 2. 为后续类和对象学习打基础
绝活蛋炒饭
2024/12/16
1250
C++入门
【C++阅览室】C++入门之过渡C语言
定义命名空间,需要使用到 namespace 关键字 ,后面跟 命名空间的名字 ,然 后接一对 {} 即可, {}
小文要打代码
2024/10/16
590
【C++阅览室】C++入门之过渡C语言
相关推荐
【C++】基础入门
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验