美文网首页numpy 必知必会
numpy必知必会-第五天

numpy必知必会-第五天

作者: 人工智能人话翻译官 | 来源:发表于2019-04-29 14:32 被阅读87次

    21 限制numpy array中的浮点数位数

    例如:
    输入
    array([[0.11680849, 0.11692854, 0.55664153],
    [0.39624703, 0.21608747, 0.90726919],
    [0.40428186, 0.2740109 , 0.50701363],
    [0.09602607, 0.52432811, 0.24766445],
    [0.77502255, 0.42110488, 0.48407816]])
    输出
    array([[0.12, 0.12, 0.56],
    [0.4 , 0.22, 0.91],
    [0.4 , 0.27, 0.51],
    [0.1 , 0.52, 0.25],
    [0.78, 0.42, 0.48]])

    numpy array中的浮点数默认保留小数点后面8位,我们可以通过np.set_printoptions(precision=2)来进行控制。precision用来控制小数点位数。

    rand_arr = np.random.random((5,3))
    np.set_printoptions(precision=2)
    rand_arr
    

    输出:

    array([[0.12, 0.12, 0.56],
           [0.4 , 0.22, 0.91],
           [0.4 , 0.27, 0.51],
           [0.1 , 0.52, 0.25],
           [0.78, 0.42, 0.48]])
    

    22 把numpy array中的浮点数当很小的时候会使用科学计数法来显示,修改显示方式按照习惯的十进制输出

    例如:
    输入
    array([[5.43404942e-04, 2.78369385e-04, 4.24517591e-04],
    [8.44776132e-04, 4.71885619e-06, 1.21569121e-04],
    [6.70749085e-04, 8.25852755e-04, 1.36706590e-04]])
    输出
    array([[0.000543, 0.000278, 0.000425],
    [0.000845, 0.000005, 0.000122],
    [0.000671, 0.000826, 0.000137]])

    np.random.seed(100)
    rand_arr = np.random.random([3,3])/1e3
    np.set_printoptions(suppress=True, precision=6)  # precision is optional
    rand_arr
    

    输出

    array([[0.000543, 0.000278, 0.000425],
           [0.000845, 0.000005, 0.000122],
           [0.000671, 0.000826, 0.000137]])
    

    np.set_printoptions(suppress=True, precision=6) 中的suppress如果设置为False,则是使用科学计数法,True则不使用科学计数法。

    23 控制array内部元素的显示长度,只显示6个,其他的以“... ”代替。

    例如

    a = np.arange(15)
    a
    

    正常输出

    array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14])
    

    我们希望的输出

    array([ 0,  1,  2, ..., 12, 13, 14])
    
    np.set_printoptions(threshold=10)
    a = np.arange(15)
    a
    

    输出

    array([ 0,  1,  2, ..., 12, 13, 14])
    

    np.set_printoptions(threshold=10)中的threshold=10代表长度超过10时,则只显示6个元素,其它的以“... ”代替。

    24 取消上面示例中的截取操作,显示全部的元素。

    例如:

    a = np.arange(15)
    a
    

    输出为

    array([ 0,  1,  2, ..., 12, 13, 14])
    

    我们希望的输出

    array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14])
    
    np.set_printoptions(threshold=1000)
    a = np.arange(15)
    a
    

    输出

    array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14])
    

    23,24两个示例中通过np.set_printoptions(threshold=1000)中的threshold来控制显示的长度。默认值就是1000。

    25 从text格式的裸数据中导入数据到numpy中

    例如:
    text格式的裸数据如下

    5.1,3.5,1.4,0.2,Iris-setosa
    4.9,3.0,1.4,0.2,Iris-setosa
    4.7,3.2,1.3,0.2,Iris-setosa
    4.6,3.1,1.5,0.2,Iris-setosa
    

    数据元素之间用,进行分隔,我们可以使用np.genfromtext方便的导入

    url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
    iris = np.genfromtxt(url, delimiter=',', dtype='object')
    
    iris[:3]
    

    输出:

    array([[b'5.1', b'3.5', b'1.4', b'0.2', b'Iris-setosa'],
           [b'4.9', b'3.0', b'1.4', b'0.2', b'Iris-setosa'],
           [b'4.7', b'3.2', b'1.3', b'0.2', b'Iris-setosa'],
           [b'4.6', b'3.1', b'1.5', b'0.2', b'Iris-setosa'],
           [b'5.0', b'3.6', b'1.4', b'0.2', b'Iris-setosa'],
           [b'5.4', b'3.9', b'1.7', b'0.4', b'Iris-setosa'],
           [b'4.6', b'3.4', b'1.4', b'0.3', b'Iris-setosa'],
           [b'5.0', b'3.4', b'1.5', b'0.2', b'Iris-setosa'],
           [b'4.4', b'2.9', b'1.4', b'0.2', b'Iris-setosa'],
           [b'4.9', b'3.1', b'1.5', b'0.1', b'Iris-setosa']], dtype=object)
    

    相关文章

      网友评论

        本文标题:numpy必知必会-第五天

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