美文网首页一起折腾Python
python3.6 numpy 数组的多种取整方式

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

作者: LeeMin_Z | 来源:发表于2018-07-30 20:39 被阅读5223次
    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)
    <ipython-input-254-a648fd813d6e> in <module>()
    ----> 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 数组的多种取整方式

        本文链接:https://www.haomeiwen.com/subject/qshgmftx.html