2022年 11月 9日

python的三种取整方式_python3.6 numpy 数组的多种取整方式

类型type不变,数值value取整。

截取整数部分 np.trunc

向上取整 np.ceil

向下取整np.floor

四舍五入取整np.rint

类型type改变

AA = np.array

AA.astype(np.int)

分别用list,np.array 存储数据导致的不同点

# 为了看不同点,生成一个不变的数组

# 如果用list,那么astype就有点麻烦

In [245]: customersAge = [70 * np.random.rand(20)]

In [250]: np.trunc(customersAge)

Out[250]:

array([[ 62., 33., 47., 25., 57., 64., 0., 50., 66., 34., 44.,

45., 14., 40., 48., 45., 5., 50., 29., 35.]])

In [251]: np.ceil(customersAge)

Out[251]:

array([[ 63., 34., 48., 26., 58., 65., 1., 51., 67., 35., 45.,

46., 15., 41., 49., 46., 6., 51., 30., 36.]])

In [252]: np.floor(customersAge)

Out[252]:

array([[ 62., 33., 47., 25., 57., 64., 0., 50., 66., 34., 44.,

45., 14., 40., 48., 45., 5., 50., 29., 35.]])

In [253]: np.rint(customersAge)

Out[253]:

array([[ 62., 33., 47., 25., 58., 64., 0., 50., 67., 35., 44.,

45., 14., 41., 49., 45., 6., 51., 29., 36.]])

# 但这样list不能直接用astype,要把格式换成array…呵呵呵

In [254]: customersAge.astype(np.int)

—————————————————————————

AttributeError Traceback (most recent call last)

in ()

—-> 1 customersAge.astype(np.int)

AttributeError: ‘list’ object has no attribute ‘astype’

In [256]: np.array(customersAge).astype(np.int)

Out[256]:

array([[62, 33, 47, 25, 57, 64, 0, 50, 66, 34, 44, 45, 14, 40, 48, 45, 5,

50, 29, 35]])

# 既然用numpy,最好就是np.array用到底

In [264]: customersAge = np.array( 70 * np.random.rand(20))

In [265]: customersAge.astype(np.int)

Out[265]:

array([57, 31, 59, 0, 27, 6, 25, 23, 54, 18, 33, 17, 67, 66, 24, 57, 45,

64, 62, 47])

一个稍不留意就会踩到的坑

** 一个错误的例子,以下的customersAge有点像method,每次执行customersAge都会生成新的随机数组。

In [237]: customersAge = 70 * np.random.rand(20)

In [238]: customersAge

Out[238]:

array([ 3.56159926, 35.18988661, 30.91306022, 48.4666088 ,

55.30506631, 11.90920767, 4.87756428, 1.08342895,

60.72547271, 65.88350747, 23.43454301, 40.15301934,

68.8468645 , 38.89195783, 10.44007659, 69.53010165,

68.42184315, 13.67602042, 42.63655944, 53.05115994])

In [239]:

In [239]: np.trunc(customersAge)

Out[239]:

array([ 3., 35., 30., 48., 55., 11., 4., 1., 60., 65., 23.,

40., 68., 38., 10., 69., 68., 13., 42., 53.])

In [240]: np.ceil(customersAge)

Out[240]:

array([ 4., 36., 31., 49., 56., 12., 5., 2., 61., 66., 24.,

41., 69., 39., 11., 70., 69., 14., 43., 54.])

In [241]: np.floor(customersAge)

Out[241]:

array([ 3., 35., 30., 48., 55., 11., 4., 1., 60., 65., 23.,

40., 68., 38., 10., 69., 68., 13., 42., 53.])

In [243]: np.rint(customersAge)

Out[243]:

array([ 4., 35., 31., 48., 55., 12., 5., 1., 61., 66., 23.,

40., 69., 39., 10., 70., 68., 14., 43., 53.])

In [244]: customersAge.astype(np.int)

Out[244]:

array([ 3, 35, 30, 48, 55, 11, 4, 1, 60, 65, 23, 40, 68, 38, 10, 69, 68,

13, 42, 53])

2018.7.27