NumPy?中模量(%)和楼层划分(//)之间的差异

fhity93d  于 2022-12-23  发布在  其他
关注(0)|答案(4)|浏览(106)

最近,我读了一本关于Numpy的书,书中提到了不同类型的ufuncs,我在书中遇到了两个不同的ufuncs,分别是“modulus”(用%符号表示)和“floor division”(楼层划分)//。有人能解释一下它们之间的区别吗?为什么提供两个运算符来做同样的事情(根据我的说法,显示除法提醒)?如果我错了,请纠正。

kpbpu008

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
ars1skjm

ars1skjm2#

假设a= 10,B = 6
a%B将为您提供余数,即4
a//B会给予商,即1

h6my8fg2

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
a1o7rhls

a1o7rhls4#

考虑模数和楼层划分之间差异的一种方法是使用钟面的类比

想象一下时钟上的一根指针。它来回移动并指向一个数字。让我们假设一个循环在指针指向12时开始(和结束)。在这种情况下

  • 模数,%,就是手现在所指的位置
  • 楼层划分是指针完成一个循环的次数

实施例1

在第一循环中,当指针指向4时,模数为4,但楼层划分为0。

4 % 12 # returns 4
4 // 12 # returns 0

实施例2

在第二循环中,当指针指向4时,模数仍然是4,但是楼层划分现在是1

16 % 12 # returns 4
16 // 12 # returns 1

相关问题