1. Tách mảng một chiều bằng np.array_split()

Tách mảng là công việc thường dùng trong khi thao tác với các dữ liệu số. Tách mảng có nghĩa là phân cách từng phần tử trong mảng ra theo số lượng các phần tử cần phân tách.

Trong Numpy, khi tách mảng ta sẽ thường sử dụng hàm array_split() – hàm nãy sẽ tách mảng dựa theo số lượng phần tử cần phân tách có trong mảng ban đầu và trả về một mảng mới gồm các phần tử được phân tách bên trong.

Ví dụ dưới đây, sử dụng hàm array_split() để tách mảng ban đầu ra thành một mảng mới có 3 cặp phần tử như sau:

import numpy as np 

# Mang a 
a = np.array([1, 2, 3, 4, 5, 6]) 

# Tach mang thanh 3 cap phan tu 
b = np.array_split(a, 3) 
print(b)

# Hien thi cac phan tu sau khi tach trong mang
print(b[0])
print(b[1])
print(b[2])

Kết quả:

[array([1, 2]), array([3, 4]), array([5, 6])]

Nếu số lượng phần tử cần tách ra trong mảng ban đầu lớn hơn các cặp phần tử có thể tách cho mảng, Numpy sẽ điểu chỉnh để tách ra các cặp phần tử trong mảng mới sao cho phù hợp nhất.

import numpy as np 

# Mang a 
a = np.array([1, 2, 3, 4, 5, 6]) 

# Tach mang thanh 4 cap phan tu 
b = np.array_split(a, 4) 
print(b)

# Hien thi cac phan tu sau khi tach trong mang
print(b[0])
print(b[1])
print(b[2])
print(b[3])

Kết quả:

[array([1, 2]), array([3, 4]), array([5]), array([6])]
[1 2]
[3 4]
[5]
[6]

Lưu ý: Trong numpy còn có thể tách mảng bằng cách sử dụng hàm np.split() tuy nhiên, hàm này sẽ không thể tách phần tử khi số lượng cặp phần tử cần tách là không phù hợp.

2. Tách mảng hai chiều bằng np.array_split()

Các mảng 2 chiều cũng có thể hoàn toàn tách ra theo số lượng cặp phần tử bằng cách sử dụng hàm np.array_split() – kết quả của việc tách mảng hai chiều sẽ trả về môt mảng mới với các phần tử bên trong là các cặp mảng hai chiều được phân tách theo số lượng cặp.

Ví dụ dưới đây, sử dụng hàm np.array_split() để tách các phần tử trong mảng 2 chiều ban đầu thành mảng mới với 3 cặp phần tử cần phân tách như sau:

import numpy as np

# Mang a
a = np.array([
    [1, 2], 
    [3, 4], 
    [5, 6], 
    [7, 8], 
    [9, 10], 
    [11, 12]
])

# Tach mang 2 chieu thanh 3 cap 
b = np.array_split(a, 3)
print(b)

# Hien thi cac cap phan tu
print("Cac cap phan tu sau khi tach tu mang ban dau")
print(b[0],"\n")
print(b[1], "\n")
print(b[2], "\n")

Kết quả:

[array([[1, 2], [3, 4]]), array([[5, 6], [7, 8]]), array([[ 9, 10], [11, 12]])]
Cac cap phan tu sau khi tach tu mang ban dau
[[1 2]
 [3 4]] 

[[5 6]
 [7 8]] 

[[ 9 10]
 [11 12]] 

Nếu như bạn chỉ cần tách các ra các cặp phần tử từ mảng ban đầu theo trục dọc (hoặc trục ngang) của mảng hai chiều, khi đó bạn sẽ cần thêm tham số axis = 0 (để tách theo trục ngang) hay axis = 1 (để tách theo trục dọc ) vào trong hàm np.array_split() như sau:

import numpy as np

# Mang a
a = np.array([
    [1, 2], 
    [3, 4], 
    [5, 6], 
    [7, 8], 
    [9, 10], 
    [11, 12]
])

# Tach mang 2 chieu thanh 3 cap theo truc doc
b = np.array_split(a, 3, axis=1)
print(b)

# Hien thi cac cap phan tu
print("Cac cap phan tu sau khi tach tu mang ban dau")
print(b[0],"\n")
print(b[1], "\n")
print(b[2], "\n")

Kết quả:

[array([[ 1],
       [ 3],
       [ 5],
       [ 7],
       [ 9],
       [11]]), 
array([[ 2],
       [ 4],
       [ 6],
       [ 8],
       [10],
       [12]]), 
array([], shape=(6, 0), dtype=int64)]
Cac cap phan tu sau khi tach tu mang ban dau
[[ 1]
 [ 3]
 [ 5]
 [ 7]
 [ 9]
 [11]] 

[[ 2]
 [ 4]
 [ 6]
 [ 8]
 [10]
 [12]] 

[] 

3. Tách mảng hai chiều với np.hsplit() và np.hstack()

Hàm np.hsplit() được sử dụng để tách mảng hai chiều thành các cặp phần cho mảng mới với cách tách theo trục dọc, trong khi đó hàm np.hstack() được sử dụng để tách mảng 2 chiều thành các cặp phần tử theo trục ngang.

Ví dụ dưới đây, sử dụng hàm np.hsplit() để tách mảng 2 ban đầu chiều thành 3 cặp phẩn tử theo trục dọc như sau:

import numpy as np

# Mang a
a = np.array([
    [1, 2, 3], 
    [4, 5, 6], 
    [7, 8, 9], 
    [10, 11, 12], 
    [13, 14, 15], 
    [16, 17, 18]
])

# Tach mang thanh 3 cap theo truc doc
b = np.hsplit(a, 3)
print(b)

# Hien thi cac cap phan tu 
print("Cac cap phan tu sau khi tach tu mang ban dau") 
print(b[0],"\n") 
print(b[1], "\n") 
print(b[2], "\n")

Kết quả:

[array([[ 1],
       [ 4],
       [ 7],
       [10],
       [13],
       [16]]), 
array([[ 2],
       [ 5],
       [ 8],
       [11],
       [14],
       [17]]), 
array([[ 3],
       [ 6],
       [ 9],
       [12],
       [15],
       [18]])]
Cac cap phan tu sau khi tach tu mang ban dau
[[ 1]
 [ 4]
 [ 7]
 [10]
 [13]
 [16]] 

[[ 2]
 [ 5]
 [ 8]
 [11]
 [14]
 [17]] 

[[ 3]
 [ 6]
 [ 9]
 [12]
 [15]
 [18]]