1. 程式人生 > >Python中Numpy(2,numpy的基本操作(級聯,維度轉換,切分,副本))

Python中Numpy(2,numpy的基本操作(級聯,維度轉換,切分,副本))

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]