NumPy中模数(%)和地板除法(//)之间的区别?

Posted

技术标签:

【中文标题】NumPy中模数(%)和地板除法(//)之间的区别?【英文标题】:Difference between modulus (%) and floor division(//) in NumPy? 【发布时间】:2019-06-17 08:20:28 【问题描述】:

最近,我读了一本关于 Numpy 的书,其中提到了不同类型的 ufunc,在那里我遇到了两种不同的 ufunc,即“模数”,用% 符号和“地板除法”// 表示。有人可以解释它们之间的区别以及为什么提供两个运算符来做同样的事情(根据我的说法,显示除法提醒)?如有错误请指正。

【问题讨论】:

是什么让你认为他们做同样的事情?一个给 raminder,另一个给 quocient 试着同时使用它们,你会看到。 13 // 4 = 313 % 4 = 1。 13 中有 4 的三倍,但如果将 13 除以 4,则余数为 1。 测试你的假设 - 启动你的 Python,用几个数字尝试两者。例如,for i in range(10): print (i//3, i%3) 【参考方案1】:

两者都是具有不同结果的有效数学函数。

模数

模函数计算除法的余数,即整数除法的“余数”。

地板

floor-function 提供整数除法的下界。上限由 ceil 函数计算。 (基本上来说,floor-function 会去掉所有的小数)。

a=5
b=2
print(a%b) # Prints 1 as leftover
print(a//b) # Prints 2, since 5/2=2.5 and the decimal is cut off
print(a - (a//b)*b) # Prints 1, this is the modulo, calculated by the floor function

【讨论】:

【参考方案2】:

假设 a= 10,b = 6

a%b 会给你余数,即 4

a//b 会给你商,即 1

【讨论】:

以上是关于NumPy中模数(%)和地板除法(//)之间的区别?的主要内容,如果未能解决你的问题,请参考以下文章

为啥模数运算符很慢?

NumPy 入门二

如何在 C# 中计算整数的除法和模数?

运算符

Python 中 numpy.random.rand 与 numpy.random.randn 之间的区别

numpy中数组之间的区别