Python中Numpy(2,numpy的基本操作(級聯,維度轉換,切分,副本))
阿新 • • 發佈:2018-11-12
1. ndarray的基本操作
# 1.索引與切片 和列表的是一個道理
n2 = np.arange(0,10,1)
print(n2)
print(n2[::-1]) #反轉
print(n2[::2]) #按步長取資料
#2. 變形 使用reshape函式,注意引數是一個tuple!
n3 = n2.reshape((5,2))
print(n3)
# 3. 級聯 np.concatenate() 即就是將兩個陣列連線起來 # 級聯的引數是列表:一定要加中括號或小括號 # 維度必須相同,形狀相符 n1 = np.random.randint(0,10,size=(5,5)) print(n1) # 將n1和n1連線起來,axis=0為列連線,axis=1為行連線 n2 = np.concatenate((n1,n1),axis=0) print(n2) # 4.轉換維度 n3 = np.random.randint(0,10,10) print(n3) # 將水平的轉化為垂直的 n4 = np.vstack(n3) print(n4) # 將垂直的轉化為水平的 n5 = np.hstack(n4) print(n5) # 5.切分 # 5.1 np.split() n6 = np.random.randint(0,255,size=(7,7)) print(n6) # 把n6陣列從第二個到第三個切割開來 # (陣列角標從0開始,左閉右開),前面是部分,指定的切割內容是一部分,後面是一部分 # 裡面的axis預設等於0,即對“行”進行切分 n7 = np.split(n6,(2,4)) print(n7) # 引數axis=1, 即對“列”進行切分 n8 = np.split(n6,(2,4),axis=1) print(n8) # 5.2 np.vsplit() # 切分行 n9 = np.vsplit(n6,(1,3)) print(n9) # 5.3 np.hsplit() # 切分列 n9 = np.vsplit(n6,(1,3)) print(n9)
# 6 副本 copy() n = np.array([1,2,3,4]) n1 = n # 把n的值直接賦值給n1 n1[2] = 1024 #修改n1裡面的一個值 print("n2為:",n1) print("n為:",n) # n2為: [ 1 2 1024 4] # n為: [ 1 2 1024 4] # 我們會發現用等號直接賦值的方式時,修改n1,n裡面的數也會被修改 # 為防止上述的情況出現,用copy() n3 = np.array([1,2,3,4]) n4 = n.copy() #使用 copy()函式建立副本 n4[2] = 1024 print("n3為:",n) print("n4為:",n3) # n3為: [ 1 2 1024 4] # n4為: [1 2 3 4]