• 关于python中数组的问题,序列格式转换


    https://blog.csdn.net/sinat_34474705/article/details/74458605?utm_source=blogxgwz1

    https://www.cnblogs.com/ArsenalfanInECNU/p/4793354.html

    https://blog.csdn.net/zxyhhjs2017/article/details/80157930

    https://blog.csdn.net/sinat_27693393/article/details/73195570

    https://vimsky.com/article/3717.html

     二维数组的创建。

    二维数组本身只是数学上的一个概念,我们要把数学中的东西,写进程序中

    可以有多种表示数组的方式,

    一种是利用np的库

    一种是python本身的双层列表

    (这两种格式只是支持的索引方式不相同。,,用np创建的array支持的更多些。)

    1、

    import numpy as np
    c = np.array([[1.0,2.0],[3.0,4.0]])
    print(c)

    >>>[[1. 2.]
           [3. 4.]]
    print(c[:,[1]])  #这个是输出所有行的第一列

    >>> import numpy
    >>> a = numpy.zeros(shape=(5,2))
    >>> a
    array([[ 0.,  0.],
       [ 0.,  0.],
       [ 0.,  0.],
       [ 0.,  0.],
       [ 0.,  0.]])
    >>> a[0] = [1,2]
    >>> a[1] = [2,3]
    >>> a
    array([[ 1.,  2.],
       [ 2.,  3.],
       [ 0.,  0.],
       [ 0.,  0.],
       [ 0.,  0.]])

    2、

    pop=[[1,0,0,0],[0,1,1,1],[0,0,0,0]]
    print(pop)    #这个用双层序列构成的二维数组,是没有办法完成上面的np输出一列的,

                       #目前我知道的只有用循环

    >>>[[1, 0, 0, 0], [0, 1, 1, 1], [0, 0, 0, 0]]

    关于两种格式的互换,

    叫做list和array的互换,

    显然array支持的搜寻元素方式跟多一些。

    import numpy as np
    u = np.array([[1,2],[3,4]])
    print("u array:",u)
    m = u.tolist()         #u array转换为list  m
    print("m list:",m)
    k = np.array(m)    #list m 再转换回array  k
    print("k array:",k)

    >>>u array: [[1 2]
                        [3 4]]
    >>>m list:    [[1, 2], [3, 4]]
    >>>k array: [[1 2]
                        [3 4]]

      二维数组创建后赋值的问题

    创建一个多行多列的数组如  56行,247列

    ##创建噪声序列
    #mat=np.ones((56,247))                                                          #注意这里传进去的要是元组这里是mat的类型,namestr是名字文件中有几个名字,也就是mat有几行。
    #print(mat.shape[0])
    #print(mat.shape[1])
    #for i in range(mat.shape[0]):
    #    for k in range(mat.shape[1]):
    #        mat[i][k]=mat[i][k]*10+random.random()                                #后面是添加一个随机数。产生一个有噪声的序列。
    #print(mat)   

    双层列表的切片

    pop=[[1,0,0,0],[0,1,1,1],[0,0,0,0]]
    print(pop)
    print(pop[:2])

    print(pop[2:])

    >>>[[1, 0, 0, 0], [0, 1, 1, 1], [0, 0, 0, 0]]
    >>>[[1, 0, 0, 0], [0, 1, 1, 1]]                                                           #这个是切片后的

    >>>[[0, 0, 0, 0]]                                                                             #切片的另一部分

    二维数组,如何去除某一行或者某一列

    1.numpy.delete(arr,obj,axis=None)
    arr:输入向量
    obj:表明哪一个子向量应该被移除。可以为整数或一个int型的向量
    axis:表明删除哪个轴的子向量,若默认,则返回一个被拉平的向量

    • a = np.array(np.arange(12).reshape(3,4))
    •  
    • a
    • Out[301]:
    • array([[ 0, 1, 2, 3],
    • [ 4, 5, 6, 7],
    • [ 8, 9, 10, 11]])
    •  
    • np.delete(a,1,0)
    • Out[302]:
    • array([[ 0, 1, 2, 3],
    • [ 8, 9, 10, 11]])
    •  
    • np.delete(a,1,1)
    • Out[303]:
    • array([[ 0, 2, 3],
    • [ 4, 6, 7],
    • [ 8, 10, 11]])
    •  
    • np.delete(a,[0,1],1)
    • Out[304]:
    • array([[ 2, 3],
    • [ 6, 7],
    • [10, 11]])
    •  
    • np.delete(a,np.s_[::2],1)
    • Out[306]:
    • array([[ 1, 3],
    • [ 5, 7],
    • [ 9, 11]])
       
       
      示例:

      1.删除一列

          >>> dataset=[[1,2,3],[2,3,4],[4,5,6]]
          >>> import numpy as np
          >>> dataset = np.delete(dataset, -1, axis=1)
          >>> dataset
          array([[1, 2],
                 [2, 3],
                 [4, 5]])


      2.删除多列

          arr = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
          np.delete(arr, [1,2], axis=1)
          array([[ 1,  4],
                 [ 5,  8],
                 [ 9, 12]])

       
       
       

     数组中格式的问题

    https://blog.csdn.net/wld914674505/article/details/80460042

     

    1. z = np.array([[1, 2, 3, 4],
    2. [5, 6, 7, 8],
    3. [9, 10, 11, 12],
    4. [13, 14, 15, 16]])
    5. z.shape
    6. (4, 4)                            #这里的z创建出来是  4行4列
       
       
       
      但我们只想要一列的话:
       
      • z.reshape(-1,1)
      • array([[ 1],
      • [ 2],
      • [ 3],
      • [ 4],
      • [ 5],
      • [ 6],
      • [ 7],
      • [ 8],
      • [ 9],
      • [10],
      • [11],
      • [12],
      • [13],
      • [14],
      • [15],
      • [16]])
      
      
      想要变成两列:
      • z.reshape(-1, 2)
      • array([[ 1, 2],
      • [ 3, 4],
      • [ 5, 6],
      • [ 7, 8],
      • [ 9, 10],
      • [11, 12],
      • [13, 14],
      • [15, 16]])
      
      
       
       
       
      python序列中每个元素加1的简单写法:
      n=[i+1 for i in range(1,10)]
      >>>[2,3,4,5,6,7,8,9,10]
       
      对应元素相加
      行相加、列相加:
      import numpy as np
      a = [1,2,3]
      b = [2,3,4]
      c = [3,4,5]
      print(np.sum([a,b,c], axis = 0))    #输出是[6 9 12]

      print(np.sum([a,b],axis=1))         #输出是[6 9]
       
       
       
      还有一个Python数组行和列返回结果:
      hang,lie=a.shape()                                 
      #上面的语句是错误的,报错如下:
      TypeError: 'tuple' object is not callable
      应该吧()去掉如:hang,lie=a.shape,这样才是正确的写法。
  • 相关阅读:
    Android WebView使用
    Android
    Instant Buy Android API Tutorial
    cocos2dx 手势识别
    cocos2d-x 判断两条直线是否相交
    golang 环境bash 以及shell
    技术描述
    golang web开发获取get、post、cookie参数
    Linux curl 模拟form表单提交信息和文件
    Golang HTTP文件上传
  • 原文地址:https://www.cnblogs.com/chulin/p/9848558.html
Copyright © 2020-2023  润新知