python3.6 numpy 数组的多种取整方式

  1. 类型type不变,数值value取整。
    截取整数部分 np.trunc
    向上取整 np.ceil
    向下取整np.floor
    四舍五入取整np.rint

  2. 类型type改变

AA = np.array
AA.astype(np.int)

  1. 分别用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])

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

** 一个错误的例子,以下的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

你可能感兴趣的:(python3.6 numpy 数组的多种取整方式)