美文网首页
numpy基础(二)

numpy基础(二)

作者: sixkery | 来源:发表于2018-10-10 16:42 被阅读8次

    numpy 数组索引及切片

    一维数组的索引以及切片

    在numpy 中一维数组的切片和python中的列表一样。切片左闭右开。

    
    In [18]: a
    Out[18]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    
    In [19]: a[2]
    Out[19]: 2
    
    In [20]: a[:3]
    Out[20]: array([0, 1, 2])
    
    多维数据的索引及切片

    多维一般指二维数组,切片的方式有两个写法:

    In [22]: a = np.arange(15).reshape(3,5)
    
    In [23]: a
    Out[23]:
    array([[ 0,  1,  2,  3,  4],
           [ 5,  6,  7,  8,  9],
           [10, 11, 12, 13, 14]])
    
    In [24]: a[1,1]
    Out[24]: 6
    
    In [25]: a[1][1]
    Out[25]: 6
    

    三维就把二维的进化一下就好了:
    按照先维度后行后列。

    In [29]: a
    Out[29]:
    array([[[ 0,  1],
            [ 2,  3]],
    
           [[ 4,  5],
            [ 6,  7]],
    
           [[ 8,  9],
            [10, 11]]])
    
    In [30]: a[1,1,1]
    Out[30]: 7
    

    布尔型的索引及切片

    In [34]: a = np.arange(12).reshape(3,4)
    
    In [35]: a
    Out[35]:
    array([[ 0,  1,  2,  3],
           [ 4,  5,  6,  7],
           [ 8,  9, 10, 11]])
    
    In [36]: a > 5
    Out[36]:
    array([[False, False, False, False],
           [False, False,  True,  True],
           [ True,  True,  True,  True]])
    

    通常情况下,我们是用来筛选的:

    In [37]: a[a>5]
    Out[37]: array([ 6,  7,  8,  9, 10, 11])
    

    这样就可以了。

    numpy随机数

    以正态分布和均匀分布生成的随机数。
    均匀分布生成的随机数:

    # 以均匀分布的方式生成随机数
    # numpy.random.rand() 生成一个0-1之间的随机浮点数或N维浮点数
    In [1]: import numpy as np
    
    In [2]: np.random.rand()
    Out[2]: 0.7056668317530578
    
    In [3]: np.random.rand(3,3)
    Out[3]:
    array([[0.85244573, 0.43591207, 0.98709316],
           [0.16660604, 0.84830518, 0.14701655],
           [0.06542728, 0.4029084 , 0.69642433]])
    
    In [4]: np.random.rand(2,2,2)
    Out[4]:
    array([[[0.19348656, 0.61931929],
            [0.40640615, 0.89262989]],
    
           [[0.82513219, 0.16872264],
            [0.20941504, 0.47643563]]])
    

    正态分布生成的随机数:

    In [5]: np.random.randn()
    Out[5]: 0.06686851978010712
    
    In [6]: np.random.randn(3,3)
    Out[6]:
    array([[-1.66678949, -1.81216186, -0.12748947],
           [ 0.91738847, -0.7739602 ,  0.27155456],
           [ 0.34947274,  0.0610055 ,  1.16152738]])
    
    In [7]: np.random.randn(2,2,2)
    Out[7]:
    array([[[-0.96374594,  0.00700868],
            [ 0.18058655, -1.42383515]],
    
           [[-0.88401762, -0.00433659],
            [ 1.54101661,  1.51848019]]])
    
    

    这样看起来太不直观了,画个图吧

    import matplotlib.pyplot as plt
    
    b = np.random.rand(500)
    a = np.random.rand(500)
    
    c = np.random.rand(500)
    d = np.random.rand(500)
    plt.scatter(a,b)
    plt.scatter(c,d)
    plt.show()
    

    这是随机分布的图:


    随机分布图

    这是正态分布的图:


    正态分布

    numpy 随机数的其他用法

    在1-10之间随机生成整数

    In [36]: np.random.randint(1,10)
    Out[36]: 5
    # 生成指定数量的随机数
    In [37]: np.random.randint(1,10,size=5)
    Out[37]: array([5, 4, 7, 2, 2])
    # 二维
    In [38]: np.random.randint(1,10,size=(2,5))
    Out[38]:
    array([[2, 7, 2, 9, 1],
           [4, 8, 6, 3, 1]]) 
    

    相关文章

      网友评论

          本文标题:numpy基础(二)

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