Numpy array 分割

創建數據

首先 import 模塊

import numpy as np

建立3行4列的Array

A = np.arange(12).reshape((3, 4))
print(A)
"""
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
"""

縱向分割

print(np.split(A, 2, axis=1))
"""
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]])]
"""

橫向分割

print(np.split(A, 3, axis=0))
# [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]

錯誤的分割

範例的Array只有4列,只能等量對分,因此輸入以上程序代碼後Python就會報錯。

print(np.split(A, 3, axis=1))
# ValueError: array split does not result in an equal division

為了解決這種情況, 我們會有下面這種方式.

不等量的分割

在機器學習時經常會需要將數據做不等量的分割,因此解決辦法為np.array_split()

print(np.array_split(A, 3, axis=1))
"""
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2],
[ 6],
[10]]), array([[ 3],
[ 7],
[11]])]
"""

成功將Array不等量分割!

其他的分割方式

在Numpy裡還有np.vsplit()與橫np.hsplit()方式可用。

print(np.vsplit(A, 3)) #等於 print(np.split(A, 3, axis=0))
# [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]
print(np.hsplit(A, 2)) #等於 print(np.split(A, 2, axis=1))
"""
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]])]
"""

最後

如果你覺得本文對你有幫助,希望可以關注並轉發,這樣我會更有動力更新的。


分享到:


相關文章: