最近,我读了一本关于Numpy的书,书中提到了不同类型的ufuncs,我在书中遇到了两个不同的ufuncs,分别是“modulus”(用%符号表示)和“floor division”(楼层划分)//。有人能解释一下它们之间的区别吗?为什么提供两个运算符来做同样的事情(根据我的说法,显示除法提醒)?如果我错了,请纠正。
%
//
kpbpu0081#
两者都是有效的数学函数,但结果不同。
模数
modulus-function计算除法的余数,即整数除法的“剩余部分”。
地板
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
ars1skjm2#
假设a= 10,B = 6a%B将为您提供余数,即4a//B会给予商,即1
h6my8fg23#
楼板分割和模量之间的关系可能有助于理解这一点:
denominator = 6 # replace with any integer numerator = 10 # replace with any integer floor_division_result = numerator//denominator modulo_result = numerator % denominator # this assertion will always be true: assert denominator * floor_division_result + modulo_result == numerator
a1o7rhls4#
考虑模数和楼层划分之间差异的一种方法是使用钟面的类比
想象一下时钟上的一根指针。它来回移动并指向一个数字。让我们假设一个循环在指针指向12时开始(和结束)。在这种情况下
在第一循环中,当指针指向4时,模数为4,但楼层划分为0。
4 % 12 # returns 4 4 // 12 # returns 0
在第二循环中,当指针指向4时,模数仍然是4,但是楼层划分现在是1
16 % 12 # returns 4 16 // 12 # returns 1
4条答案
按热度按时间kpbpu0081#
两者都是有效的数学函数,但结果不同。
模数
modulus-function计算除法的余数,即整数除法的“剩余部分”。
地板
floor-function提供了整除的下界,上界由ceil函数计算(基本上,floor-function截断了所有小数)。
ars1skjm2#
假设a= 10,B = 6
a%B将为您提供余数,即4
a//B会给予商,即1
h6my8fg23#
楼板分割和模量之间的关系可能有助于理解这一点:
a1o7rhls4#
考虑模数和楼层划分之间差异的一种方法是使用钟面的类比
想象一下时钟上的一根指针。它来回移动并指向一个数字。让我们假设一个循环在指针指向12时开始(和结束)。在这种情况下
实施例1
在第一循环中,当指针指向4时,模数为4,但楼层划分为0。
实施例2
在第二循环中,当指针指向4时,模数仍然是4,但是楼层划分现在是1