圖片來源:(https://forum.gamer.com.tw/Co.php?bsn=43473&sn=45361)
# 創建一個隨機陣列
arr = np.random.rand(6, 4)
print(arr)
輸出
[[0.05740255 0.56588944 0.29777472 0.4922545 ][0.1522698 0.3753351 0.87934046 0.05703105][0.65705753 0.76160286 0.93015474 0.16404497][0.39284049 0.26418033 0.05374025 0.89433956][0.66719889 0.98209855 0.42503762 0.18628212][0.81288114 0.48523433 0.42328033 0.2831939 ]]
# 水平分割成兩部分
left, right = np.hsplit(arr, 2)
輸出
[[0.58401272 0.5045574 0.29614647 0.50905332][0.64851305 0.69617266 0.32501001 0.95620193][0.57571878 0.46894043 0.07597078 0.58931756][0.84840314 0.46988579 0.29166666 0.3303905 ][0.67632515 0.30851759 0.55804496 0.65834096][0.37642515 0.43534226 0.70451676 0.46899699]]
# 將兩部分垂直合併
new_arr = np.vstack((left, right))
# 將new_arr沿著行分割成三部分
top, middle, bottom = np.vsplit(new_arr, 3)
分割陣列
numpy.split(arr, indices_or_sections, axis=0)
: 將陣列沿著指定軸分割成多個子陣列
arr
:要分割陣列indices_or_sections
:指定分割點索引或要分割份數axis
:指定分割的軸,預設為0(沿著行分割)indices_or_sections
: 可以是一個整數,表示要分割的份數;也可以是一個陣列,表示分割點的索引numpy.hsplit(arr, indices_or_sections)
: 沿著水平軸 (axis=1) 分割陣列numpy.vsplit(arr, indices_or_sections)
: 沿著垂直軸 (axis=0) 分割陣列import numpy as np
arr = np.arange(9).reshape(3, 3)
print(arr)
輸出
[[0 1 2]
[3 4 5]
[6 7 8]]
# 分割成三個等份的子陣列
new_arr = np.split(arr, 3)
print(new_arr)
# [array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])]
# 分割成兩個子陣列,第一個包含兩個元素,第二個包含一個元素
new_arr = np.array_split(arr, [2])
print(new_arr)
# array([[0, 1, 2],[3, 4, 5]]), array([[6, 7, 8]])]
import numpy as np
#產生一個隨機陣列
arr = np.arange(16).reshape(4, 4)
print(arr)
輸出
[[ 0 1 2 3]
[ 4 5 6 7][ 8 9 10 11]
[12 13 14 15]]
#水平分割成兩部分
arr1, arr2 = np.hsplit(arr, 2)
print(arr1)
print(arr2)
#垂直分割成兩部分
arr3, arr4 = np.vsplit(arr, 2)
print(arr3)
print(arr4)
#依照索引分割
arr5 = np.array([1, 2, 3, 4, 5, 6])
arr6, arr7 = np.split(arr5, [3])
print(arr6)
print(arr7)
合併陣列
1.np.concatenate()
將多個陣列沿著指定軸連接起來
arrays
:要連接的陣列的序列axis
:指定連接的軸,預設為0(沿著行連接)import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
arr3 = np.concatenate((arr1, arr2))
print(arr3) # 輸出 [1 2 3 4 5 6]
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
#沿著行連接
c = np.concatenate((a, b), axis=0)
print(c)
輸出
[[1 2]
[3 4]
[5 6]]
#沿著列連接
d = np.concatenate((a, b.T), axis=1)
print(d)
輸出
[[1 2 5]
[3 4 6]]
指定軸
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6]])
arr3 = np.concatenate((arr1, arr2), axis=0) # 垂直合併
print(arr3) # 輸出 [[1 2][3 4][5 6]]
2.np.vstack() 和 np.hstack()
分別用於垂直和水平合併
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
arr3 = np.vstack((arr1, arr2)) # 垂直合併
arr4 = np.hstack((arr1, arr2)) # 水平合併
print(arr3) # 輸出 [[1 2 3][4 5 6]]
print(arr4) # 輸出 [1 2 3 4 5 6]
3.np.stack()
在一個新軸上堆疊陣列
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
arr3 = np.stack((arr1, arr2), axis=0) # 在第0軸堆疊
print(arr3) # 輸出 [[1 2 3][4 5 6]]
合併的陣列必須具有相同的形狀,除了要合併的軸
分割時,索引必須在陣列的範圍內
資料處理
:將大資料集分割成較小部分進行處理影像處理
:將影像分割成不同區域進行分析機器學習
:將特徵矩陣分割成訓練集和測試集