• Numpy基础学习与总结


    Numpy类型学习

    1.数组的表示    

    import numpy as np
    In [2]:
    #numpy核心是高维数组,库中的ndarray支持多维数组,同时提供了数值运算,可对向量矩阵进行运算
    In [5]:
    array1=np.array(range(6))
    In [ ]:
    #array()函数创建一维数组
    In [4]:
    print array1  #如果是python3使用print(array1)
    [0 1 2 3 4 5]
    In [6]:
    #查看数据结构  使用shape关键字
    In [8]:
    array1.shape
    Out[8]:
    (6L,)
    In [13]:
    array1.shape=2,3  #修改array1变化成二位数组
    In [15]:
    print array1  #输出二维数组
    [[0 1 2]
     [3 4 5]]
    In [18]:
    array2=array1.reshape(2,3) #reshape()函数在array1数组的基础上创建一个二维结构数组
    In [19]:
    print array2
    [[0 1 2]
     [3 4 5]]
    In [20]:
    array2.shape
    Out[20]:
    (2L, 3L)
    In [ ]:
    #想改变2行3列的值
    In [23]:
    array2[1,2]=88
    In [24]:
    print array2
    [[ 0  1  2]
     [ 3  4 88]]
    In [ ]:
    #利用arange()函数生成数组
    In [26]:
    array4=np.arange(13,1,-1)#1个参数是起始值,2个参数是结束值,第三个参数是步长,结果不包括结束值
    In [27]:
    print array4
    [13 12 11 10  9  8  7  6  5  4  3  2]
    In [29]:
    array4.shape=2,2,3
    In [30]:
    print array4
    [[[13 12 11]
      [10  9  8]]
    
     [[ 7  6  5]
      [ 4  3  2]]]
    In [31]:
    array5=array4.reshape(3,2,2)
    In [32]:
    print array5
    [[[13 12]
      [11 10]]
    
     [[ 9  8]
      [ 7  6]]
    
     [[ 5  4]
      [ 3  2]]]
    In [ ]:
    arange()#函数创建的数组不包括最后一个值,如果想包括使用linspace()函数
    In [33]:
    array6=np.linspace(1,12,12)#1个参数设置初始值,2个参数设置结束值,3个参数是元素的个数
    In [34]:
    print array6
    [  1.   2.   3.   4.   5.   6.   7.   8.   9.  10.  11.  12.]
    In [38]:
    print np.linspace(1,12,12)
    [  1.   2.   3.   4.   5.   6.   7.   8.   9.  10.  11.  12.]
    In [39]:
    array6.dtype  #dtype函数查看数值元素数值类型
    Out[39]:
    dtype('float64')
    In [ ]:
    #linspace()函数生成数组默认是浮点类型,
    #如果想创建整形数组,则增加dtype参数
    In [44]:
    array7=np.linspace(1,12,12,dtype=int)
    In [45]:
    print array7
    [ 1  2  3  4  5  6  7  8  9 10 11 12]
    In [46]:
    array7.dtype
    Out[46]:
    dtype('int32')
    In [ ]:
    #a=np.zeros()#zeros()生成全为0的数组
    In [ ]:
    #b=np.ones()##ones()生成全为1的数组
    In [ ]:
    #c=np.empty()##empty()生成给定维度无初始值数组
    In [40]:
    a=np.zeros((4,5))
    In [41]:
    print a
    [[ 0.  0.  0.  0.  0.]
     [ 0.  0.  0.  0.  0.]
     [ 0.  0.  0.  0.  0.]
     [ 0.  0.  0.  0.  0.]]
    In [42]:
    b=np.ones((4,5))
    In [43]:
    print b
    [[ 1.  1.  1.  1.  1.]
     [ 1.  1.  1.  1.  1.]
     [ 1.  1.  1.  1.  1.]
     [ 1.  1.  1.  1.  1.]]
    In [48]:
    a.dtype
    Out[48]:
    dtype('float64')
    In [49]:
    b.dtype
    Out[49]:
    dtype('float64')
    In [51]:
    np.ones((2,5,4),dtype=np.int16)
    Out[51]:
    array([[[1, 1, 1, 1],
            [1, 1, 1, 1],
            [1, 1, 1, 1],
            [1, 1, 1, 1],
            [1, 1, 1, 1]],
    
           [[1, 1, 1, 1],
            [1, 1, 1, 1],
            [1, 1, 1, 1],
            [1, 1, 1, 1],
            [1, 1, 1, 1]]], dtype=int16)
    In [52]:
    np.empty((3,2))
    Out[52]:
    array([[ 0.,  0.],
           [ 0.,  0.],
           [ 0.,  0.]])

     ipynb代码参考如下

    In [1]:
    import numpy as np
    
    In [2]:
    #numpy核心是高维数组,库中的ndarray支持多维数组,同时提供了数值运算,可对向量矩阵进行运算
    
    In [5]:
    array1=np.array(range(6))
    
    In [ ]:
    #array()函数创建一维数组
    
    In [4]:
    print array1  #如果是python3使用print(array1)
    
     
    [0 1 2 3 4 5]
    
    In [6]:
    #查看数据结构  使用shape关键字
    
    In [8]:
    array1.shape
    
    Out[8]:
    (6L,)
    In [13]:
    array1.shape=2,3  #修改array1变化成二位数组
    
    In [15]:
    print array1  #输出二维数组
    
     
    [[0 1 2]
     [3 4 5]]
    
    In [18]:
    array2=array1.reshape(2,3) #reshape()函数在array1数组的基础上创建一个二维结构数组
    
    In [19]:
    print array2
    
     
    [[0 1 2]
     [3 4 5]]
    
    In [20]:
    array2.shape
    
    Out[20]:
    (2L, 3L)
    In [ ]:
    #想改变2行3列的值
    
    In [23]:
    array2[1,2]=88
    
    In [24]:
    print array2
    
     
    [[ 0  1  2]
     [ 3  4 88]]
    
    In [ ]:
    #利用arange()函数生成数组
    
    In [26]:
    array4=np.arange(13,1,-1)#1个参数是起始值,2个参数是结束值,第三个参数是步长,结果不包括结束值
    
    In [27]:
    print array4
    
     
    [13 12 11 10  9  8  7  6  5  4  3  2]
    
    In [29]:
    array4.shape=2,2,3
    
    In [30]:
    print array4
    
     
    [[[13 12 11]
      [10  9  8]]
    
     [[ 7  6  5]
      [ 4  3  2]]]
    
    In [31]:
    array5=array4.reshape(3,2,2)
    
    In [32]:
    print array5
    
     
    [[[13 12]
      [11 10]]
    
     [[ 9  8]
      [ 7  6]]
    
     [[ 5  4]
      [ 3  2]]]
    
    In [ ]:
    arange()#函数创建的数组不包括最后一个值,如果想包括使用linspace()函数
    
    In [33]:
    array6=np.linspace(1,12,12)#1个参数设置初始值,2个参数设置结束值,3个参数是元素的个数
    
    In [34]:
    print array6
    
     
    [  1.   2.   3.   4.   5.   6.   7.   8.   9.  10.  11.  12.]
    
    In [38]:
    print np.linspace(1,12,12)
    
     
    [  1.   2.   3.   4.   5.   6.   7.   8.   9.  10.  11.  12.]
    
    In [39]:
    array6.dtype  #dtype函数查看数值元素数值类型
    
    Out[39]:
    dtype('float64')
    In [ ]:
    #linspace()函数生成数组默认是浮点类型,
    #如果想创建整形数组,则增加dtype参数
    
    In [44]:
    array7=np.linspace(1,12,12,dtype=int)
    
    In [45]:
    print array7
    
     
    [ 1  2  3  4  5  6  7  8  9 10 11 12]
    
    In [46]:
    array7.dtype
    
    Out[46]:
    dtype('int32')
    In [ ]:
    #a=np.zeros()#zeros()生成全为0的数组
    
    In [ ]:
    #b=np.ones()##ones()生成全为1的数组
    
    In [ ]:
    #c=np.empty()##empty()生成给定维度无初始值数组
    
    In [40]:
    a=np.zeros((4,5))
    
    In [41]:
    print a
    
     
    [[ 0.  0.  0.  0.  0.]
     [ 0.  0.  0.  0.  0.]
     [ 0.  0.  0.  0.  0.]
     [ 0.  0.  0.  0.  0.]]
    
    In [42]:
    b=np.ones((4,5))
    
    In [43]:
    print b
    
     
    [[ 1.  1.  1.  1.  1.]
     [ 1.  1.  1.  1.  1.]
     [ 1.  1.  1.  1.  1.]
     [ 1.  1.  1.  1.  1.]]
    
    In [48]:
    a.dtype
    
    Out[48]:
    dtype('float64')
    In [49]:
    b.dtype
    
    Out[49]:
    dtype('float64')
    In [51]:
    np.ones((2,5,4),dtype=np.int16)
    
    Out[51]:
    array([[[1, 1, 1, 1],
            [1, 1, 1, 1],
            [1, 1, 1, 1],
            [1, 1, 1, 1],
            [1, 1, 1, 1]],
    
           [[1, 1, 1, 1],
            [1, 1, 1, 1],
            [1, 1, 1, 1],
            [1, 1, 1, 1],
            [1, 1, 1, 1]]], dtype=int16)
    In [52]:
    np.empty((3,2))
    
    Out[52]:
    array([[ 0.,  0.],
           [ 0.,  0.],
           [ 0.,  0.]])

        

    2.Numpy数组元素的基本操作

    #数组元素的索引和切片
    In [2]:
    import numpy as np
    In [4]:
    #array[start:end:step],返回值是索引值为start到end-1之间
    #并且索引值与start之差可以被step整除的连续对象
    In [ ]:
    #如果想提取一个元素,只有start的值,array[start]
    In [3]:
    a1=np.linspace(1,26,6,dtype=int)
    In [5]:
    a1
    Out[5]:
    array([ 1,  6, 11, 16, 21, 26])
    In [6]:
    a1[3]#提取a1中第4个元素
    Out[6]:
    16
    In [8]:
    a1[1:3]#提取a1中连续几个元素,不包括end位置值,这里指的是16
    Out[8]:
    array([ 6, 11])
    In [9]:
    a1[:5]#从起点开始不包括结尾的值取出来
    Out[9]:
    array([ 1,  6, 11, 16, 21])
    In [10]:
    a1[2:]#从指定位置2开始的所有元素的值取出来
    Out[10]:
    array([11, 16, 21, 26])
    In [12]:
    a1[-1]#取出最后一个元素的值
    Out[12]:
    26
    In [13]:
    a1[3]#取出下标为3,即第4个元素的值
    Out[13]:
    16
    In [14]:
    a1[:-1]#取出元素为负数的时候,表示从右往左向上取元素
    Out[14]:
    array([ 1,  6, 11, 16, 21])
    In [15]:
    a1[2:-1]#从2开始到最后一个数,但不包括最后一个数
    Out[15]:
    array([11, 16, 21])
    In [16]:
    a2= a1[0:3:1]#0表示索引,3表示结束索引,1表示步长
    In [17]:
    a2
    Out[17]:
    array([ 1,  6, 11])
    In [18]:
    a1[0]=20
    In [19]:
    a2[0]  #更改a1的值,a2的值会发生相应改变,也就是说按切片取值赋值变量会发生改变
    Out[19]:
    20
    In [20]:
    a1[[0,1,4]]#取出索引位置为0,1,4位置上的元素
    Out[20]:
    array([20,  6, 21])
    In [21]:
    a3=a1[[0,1,4]]
    In [22]:
    a3
    Out[22]:
    array([20,  6, 21])
    In [23]:
    a1[0]=90
    In [25]:
    a3#更改a1的值a3不会发生改变,也就是按索引取值是不会改变赋值变量的值
    Out[25]:
    array([20,  6, 21])
    In [26]:
    ##针对二维数组的切片或索引取值
    In [27]:
    na1=np.array(np.arange(24),dtype=int).reshape(4,6)#arange函数生成数组
    In [29]:
    print na1
    [[ 0  1  2  3  4  5]
     [ 6  7  8  9 10 11]
     [12 13 14 15 16 17]
     [18 19 20 21 22 23]]
    In [30]:
    na1.dtype
    Out[30]:
    dtype('int32')
    In [31]:
    #在第0行上,取索引值为0,1的元素,共两行
    In [ ]:
    #在第1行上,取索引值为1,2,3,4,5的元素,共56列
    In [32]:
    na1[:2,1:]
    Out[32]:
    array([[ 1,  2,  3,  4,  5],
           [ 7,  8,  9, 10, 11]])
    In [33]:
    #在第0轴上取出索引值为[2,3]
    In [ ]:
    #在第1轴上取索引值为[2,4]
    #na1[2,2],na1[3,4]
    In [36]:
    na1[[2,3],[3,4]]
    Out[36]:
    array([15, 22])
    In [ ]:
    #在第0轴上取出索引值为一个范围
    In [ ]:
    #在第1轴上取出索引值数组
    In [37]:
    na2=na1.reshape(2,3,4)
    In [38]:
    na2
    Out[38]:
    array([[[ 0,  1,  2,  3],
            [ 4,  5,  6,  7],
            [ 8,  9, 10, 11]],
    
           [[12, 13, 14, 15],
            [16, 17, 18, 19],
            [20, 21, 22, 23]]])
    In [39]:
    na2[(1,2,3)]1,2,3  #分别表示3个维度(维度计数均从0开始),2行3列1维
    Out[39]:
    23
    In [43]:
    na2[1,2,3]
    Out[43]:
    23
    In [44]:
    #整形列表作为索引情况。如果提取三个维度的多个值,则可以在每一轴上分别定义一
    #一个整形数组或者整形列表作为索引值,但是要保证各个维度上面的长度相等
    In [ ]:
    #在0轴上索引为[1,1,0]
    In [ ]:
    #在1轴上索引为[0,1,0]
    In [ ]:
    #在2轴上索引为[2,3,0]
    In [45]:
    na2
    Out[45]:
    array([[[ 0,  1,  2,  3],
            [ 4,  5,  6,  7],
            [ 8,  9, 10, 11]],
    
           [[12, 13, 14, 15],
            [16, 17, 18, 19],
            [20, 21, 22, 23]]])
    In [46]:
    na2[[1,1,0],[0,1,0],[2,3,1]]#按照对应x,y,z查看(1,0,2)=14.(1,1,3)=19,(0,0,1)=1
    Out[46]:
    array([14, 19,  1])

     ipynb代码

    #数组元素的索引和切片
    
    In [2]:
    import numpy as np
    
    In [4]:
    #array[start:end:step],返回值是索引值为start到end-1之间
    #并且索引值与start之差可以被step整除的连续对象
    
    In [ ]:
    #如果想提取一个元素,只有start的值,array[start]
    
    In [3]:
    a1=np.linspace(1,26,6,dtype=int)
    
    In [5]:
    a1
    
    Out[5]:
    array([ 1,  6, 11, 16, 21, 26])
    In [6]:
    a1[3]#提取a1中第4个元素
    
    Out[6]:
    16
    In [8]:
    a1[1:3]#提取a1中连续几个元素,不包括end位置值,这里指的是16
    
    Out[8]:
    array([ 6, 11])
    In [9]:
    a1[:5]#从起点开始不包括结尾的值取出来
    
    Out[9]:
    array([ 1,  6, 11, 16, 21])
    In [10]:
    a1[2:]#从指定位置2开始的所有元素的值取出来
    
    Out[10]:
    array([11, 16, 21, 26])
    In [12]:
    a1[-1]#取出最后一个元素的值
    
    Out[12]:
    26
    In [13]:
    a1[3]#取出下标为3,即第4个元素的值
    
    Out[13]:
    16
    In [14]:
    a1[:-1]#取出元素为负数的时候,表示从右往左向上取元素
    
    Out[14]:
    array([ 1,  6, 11, 16, 21])
    In [15]:
    a1[2:-1]#从2开始到最后一个数,但不包括最后一个数
    
    Out[15]:
    array([11, 16, 21])
    In [16]:
    a2= a1[0:3:1]#0表示索引,3表示结束索引,1表示步长
    
    In [17]:
    a2
    
    Out[17]:
    array([ 1,  6, 11])
    In [18]:
    a1[0]=20
    
    In [19]:
    a2[0]  #更改a1的值,a2的值会发生相应改变,也就是说按切片取值赋值变量会发生改变
    
    Out[19]:
    20
    In [20]:
    a1[[0,1,4]]#取出索引位置为0,1,4位置上的元素
    
    Out[20]:
    array([20,  6, 21])
    In [21]:
    a3=a1[[0,1,4]]
    
    In [22]:
    a3
    
    Out[22]:
    array([20,  6, 21])
    In [23]:
    a1[0]=90
    
    In [25]:
    a3#更改a1的值a3不会发生改变,也就是按索引取值是不会改变赋值变量的值
    
    Out[25]:
    array([20,  6, 21])
    In [26]:
    ##针对二维数组的切片或索引取值
    
    In [27]:
    na1=np.array(np.arange(24),dtype=int).reshape(4,6)#arange函数生成数组
    
    In [29]:
    print na1
    
     
    [[ 0  1  2  3  4  5]
     [ 6  7  8  9 10 11]
     [12 13 14 15 16 17]
     [18 19 20 21 22 23]]
    
    In [30]:
    na1.dtype
    
    Out[30]:
    dtype('int32')
    In [31]:
    #在第0行上,取索引值为0,1的元素,共两行
    
    In [ ]:
    #在第1行上,取索引值为1,2,3,4,5的元素,共56列
    
    In [32]:
    na1[:2,1:]
    
    Out[32]:
    array([[ 1,  2,  3,  4,  5],
           [ 7,  8,  9, 10, 11]])
    In [33]:
    #在第0轴上取出索引值为[2,3]
    
    In [ ]:
    #在第1轴上取索引值为[2,4]
    #na1[2,2],na1[3,4]
    
    In [36]:
    na1[[2,3],[3,4]]
    
    Out[36]:
    array([15, 22])
    In [ ]:
    #在第0轴上取出索引值为一个范围
    
    In [ ]:
    #在第1轴上取出索引值数组
    
    In [37]:
    na2=na1.reshape(2,3,4)
    
    In [38]:
    na2
    
    Out[38]:
    array([[[ 0,  1,  2,  3],
            [ 4,  5,  6,  7],
            [ 8,  9, 10, 11]],
    
           [[12, 13, 14, 15],
            [16, 17, 18, 19],
            [20, 21, 22, 23]]])
    In [39]:
    na2[(1,2,3)]1,2,3  #分别表示3个维度(维度计数均从0开始),2行3列1维
    
    Out[39]:
    23
    In [43]:
    na2[1,2,3]
    
    Out[43]:
    23
    In [44]:
    #整形列表作为索引情况。如果提取三个维度的多个值,则可以在每一轴上分别定义一
    #一个整形数组或者整形列表作为索引值,但是要保证各个维度上面的长度相等
    
    In [ ]:
    #在0轴上索引为[1,1,0]
    
    In [ ]:
    #在1轴上索引为[0,1,0]
    
    In [ ]:
    #在2轴上索引为[2,3,0]
    
    In [45]:
    na2
    
    Out[45]:
    array([[[ 0,  1,  2,  3],
            [ 4,  5,  6,  7],
            [ 8,  9, 10, 11]],
    
           [[12, 13, 14, 15],
            [16, 17, 18, 19],
            [20, 21, 22, 23]]])
    In [46]:
    na2[[1,1,0],[0,1,0],[2,3,1]]#按照对应x,y,z查看(1,0,2)=14.(1,1,3)=19,(0,0,1)=1
    
    Out[46]:
    array([14, 19,  1])
  • 相关阅读:
    [SoapUI] 在执行某个TestSuite之前先执行login或者其他什么前置步骤
    [Groovy] How to check if element in groovy array/hash/collection/list?
    [Groovy] List和Map用法搜集
    [Groovy] 实战 Groovy, for each 剖析
    Groovy基本语法
    [BAT] xcopy拷贝远程服务器共享文件到本地
    [BAT] Access Denied in XCopy
    [BAT] 执行xcopy命令后出现Invalid num of parameters错误的解决办法
    [Automation] 自动化测试度量标准
    jsp页面直接编写csss
  • 原文地址:https://www.cnblogs.com/jackchen-Net/p/6592474.html
Copyright © 2020-2023  润新知