關於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,這樣才是正確的寫法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM