Mảng 3d thành mảng 4d python
Trong hướng dẫn này, bạn sẽ tìm hiểu về cách định hình lại mảng NumPy. Hướng dẫn này tập trung vào kỹ thuật định hình lại bằng cách sử dụng chức năng định hình lại mảng NumPy. Hình dạng của một mảng được định nghĩa là tổng số phần tử trong mỗi chiều của mảng Show
Định hình lại một mảng có nghĩa là thay đổi số phần tử trong một mảng hoặc thay đổi kích thước của mảng hoặc cả hai Mục lục 1
Làm thế nào để định hình lại NumPy hoạt động?Phương thức reshape() của mô-đun NumPy có thể thay đổi hình dạng của một mảng. Chẳng hạn, bạn có một bảng có hàng và cột; Bạn có thể giảm số cột từ 12 xuống còn 4 và thêm dữ liệu còn lại của các cột vào hàng mới. Như thể hiện trong hình bên dưới Kỹ thuật định hình lại NumPy cho phép chúng tôi sắp xếp lại dữ liệu trong một mảng. các numpy. reshape() không thay đổi mảng ban đầu, thay vào đó, nó tạo ra một dạng xem của mảng ban đầu và trả về một mảng mới (được định hình lại). Cú pháp cho numpy. reshape() được đưa ra dưới đây cú pháp numpy.reshape(array, shape, order = ‘C’)
Phương thức reshape() sẽ trả về một mảng đã được định hình lại với cùng một dữ liệu
Định hình lại 1d thành 2dĐể chuyển đổi mảng 1D thành mảng 2D, hãy gọi hàm reshape() với mảng 1D làm đầu vào. Xem xét ví dụ sau, trong đó chúng ta có một mảng 1D có mười phần tử Chúng tôi sẽ chuyển đổi mảng này thành mảng 2D sao cho mảng mới có hai chiều với năm phần tử mỗi phần tử hoặc năm cột Mã số import numpy as npm import numpy as np a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) output_array = np.reshape(a, (2, 5)) print("2D array after converting: ", output_array) đầu ra Hàm reshape() lấy mảng đầu vào, sau đó là một bộ xác định hình dạng của mảng mới Hình dạng (2, 5) có nghĩa là mảng mới có hai chiều và chúng tôi đã chia mười phần tử của mảng đầu vào thành hai bộ năm phần tử Hãy nhớ rằng số lượng phần tử trong mảng đầu ra phải giống như trong mảng đầu vào
Định hình lại 1d thành 3dTrong ví dụ sau, chúng ta có 12 phần tử trong mảng đầu vào 1D. Chúng ta phải chia các phần tử thành ba chiều sao cho mỗi chiều có bốn phần tử Mã số import numpy as np a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) output_array = np.reshape(a, (3, 4)) đầu ra
Định hình lại 2d thành 1dTrong đoạn mã sau, chúng ta có một mảng 2D với bốn cột. Đoạn mã dưới đây sẽ định hình lại mảng thành một chiều chứa tất cả các phần tử Mã số import numpy as np a = np.array([[1, 2, 3, 4], [5, 6, 7, 8]]) output_array = np.reshape(a, (1, 8)) print(output_array) đầu ra Trong phương thức reshape(), bộ (1, 8) có nghĩa là mảng đầu ra 1D có tám cột
Định hình lại 2d thành 3dĐoạn mã dưới đây chuyển đổi mảng 2D thành mảng 3D với cùng số phần tử Mã số import numpy as np a = np.array([[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12]]) output_array = np.reshape(a, (3, 4)) print(output_array) đầu ra Mảng mới có ba chiều với bốn cột hoặc bốn phần tử trong mỗi chiều
Định hình lại 3d thành 1dĐoạn mã sau chuyển đổi ba chiều của một mảng thành một chiều Mã số import numpy as np a = np.array([[1, 2, 3], [6, 7, 8], [4, 5, 6]]) output_array = np.reshape(a, (1, 9)) print(output_array) đầu ra
Rshape 3d sang 2dĐể chuyển đổi mảng 3 chiều thành 2D, hãy xem đoạn mã dưới đây Mã số import numpy as np a = np.array([[1, 2], [6, 7], [4, 5]]) output_array = np.reshape(a, (2, 3)) print(output_array) đầu ra
Định hình lại 4d thành 2dĐể chuyển đổi mảng 4D thành mảng 2D, hãy xem xét ví dụ sau Mã số import numpy as np a = np.array([[1, 2, 3], [6, 7, 8], [4, 5, 9], [10, 11, 13]]) output_array = np.reshape(a, (2, 6)) print(output_array) đầu ra
Định hình lại với -1 (thứ nguyên không xác định)Nếu bạn muốn chuyển đổi một mảng có kích thước không xác định thành mảng 1D, hãy sử dụng định hình lại (-1) như hình bên dưới Mã số ________số 8_______đầu ra
Định hình lại 0d thành 1dMảng có một chiều và độ dài bằng một được gọi là mảng 0D. Nói cách khác mảng 0 chiều là đại lượng vô hướng có độ dài không đổi bằng 1. Trong đoạn mã sau, chúng ta sẽ định hình lại mảng 0 chiều thành mảng 1 chiều Mã số import numpy as np a = np.array(1) print("dimension of array a: ", a.ndim) b = np.reshape(a, -1) print("dimension of array b: ", b.ndim) đầu ra Trong ví dụ trên, đầu tiên, chúng ta đã tạo một mảng 0 chiều. Vì mảng 0 chiều là đại lượng vô hướng nên chỉ có một phần tử. Chúng tôi không thể thêm nhiều mục hoặc bất kỳ thứ nguyên nào Hàm ndim cho biết kích thước của một mảng. Sau đó, chúng tôi đã sử dụng định hình lại (-1) như trong tiêu đề trước để định hình lại mảng thành 1 chiều. Khi mảng là 1 chiều, bạn có thể thêm các phần tử vào mảng
Định hình lại đảo ngượcTrong một số trường hợp, bạn cần đảo ngược hình dạng của mảng về kích thước ban đầu Nếu bạn đã áp dụng phương thức reshape() cho một mảng và bạn muốn lấy lại hình dạng ban đầu của mảng, bạn có thể gọi lại hàm reshape trên mảng đó Đảo ngược hình dạng của một mảng được thể hiện trong đoạn mã dưới đây Mã số import numpy as npm import numpy as np a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) output_array = np.reshape(a, (2, 5)) print("2D array after converting: ", output_array)0 đầu ra Trong ví dụ này, chúng ta có một mảng bốn chiều. Sau đó, chúng tôi định hình lại mảng thành hai chiều và lưu trữ mảng trong output_array Khi áp dụng chức năng định hình lại trên output_array, chúng tôi đã lấy lại mảng ban đầu với cùng kích thước. Lưu ý rằng chúng tôi đã đưa ra kích thước của mảng ban đầu bằng cách sử dụng hàm hình dạng Bạn cũng có thể thực hiện định hình lại đảo ngược trong một dòng mã như bên dưới import numpy as npm import numpy as np a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) output_array = np.reshape(a, (2, 5)) print("2D array after converting: ", output_array)1
Định hình lại thứ tựKhi sử dụng phương thức định hình lại để định hình lại mảng, có một tham số được gọi là thứ tự theo cú pháp định hình lại(). Tham số thứ tự quyết định phần tử thứ tự chỉ mục nào sẽ được tìm nạp và sắp xếp trong mảng được định hình lại Tham số thứ tự có thể có ba giá trị. C, F và A
Xem xét ví dụ sau để thấy một bức tranh rõ ràng về cách các lệnh chỉ mục định hình lại một mảng Mã số import numpy as npm import numpy as np a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) output_array = np.reshape(a, (2, 5)) print("2D array after converting: ", output_array)2 đầu ra Trong ví dụ trên, theo thứ tự C hoặc thao tác theo hàng, hai hàng đầu tiên được kết hợp và sau đó hai hàng tiếp theo được hợp nhất. Trong hoạt động theo cột, các phần tử của cột thứ nhất và thứ ba được đọc trước Nói cách khác, C là thao tác theo hàng và F là thao tác theo cột
Định hình lại dọc theo các trụcCác trục trong một mảng là các hướng dọc theo các cột và các hàng của mảng. Trong NumPy, các trục và kích thước được coi là giống nhau. Các trục được sử dụng để lập chỉ mục một mảng Trong một mảng nhiều chiều, chỉ có một chỉ số trên một trục. Kiểm tra hình ảnh dưới đây Trục 1 là hướng dọc theo cột và trục 0 là hướng dọc theo hàng. Ví dụ, nếu bạn có một mảng import numpy as npm import numpy as np a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) output_array = np.reshape(a, (2, 5)) print("2D array after converting: ", output_array)3 Chúng tôi sẽ sử dụng các trục như [1, 1]. [1, 1] có nghĩa là hàng 1 và cột 1. Phương thức định hình lại NumPy() định hình lại mảng dọc theo trục 0 hoặc chiều 0 dọc theo hàng Chúng ta có thể thay đổi thao tác hàng thành thao tác cột bằng cách chỉ định đối số thứ tự trong phương thức reshape(). Xem xét ví dụ sau trong đó chúng tôi đã áp dụng Đơn hàng C và Đơn hàng F Mã số import numpy as npm import numpy as np a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) output_array = np.reshape(a, (2, 5)) print("2D array after converting: ", output_array)4 đầu ra Do đó, thứ tự C định hình lại mảng dọc theo chiều 0 (hàng) và thứ tự F định hình lại mảng dọc theo chiều 1 (cột) Mã số import numpy as npm import numpy as np a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) output_array = np.reshape(a, (2, 5)) print("2D array after converting: ", output_array)5 đầu ra Trong mã này, có ba đối số trong phương thức reshape(). Đối số đầu tiên là '3' cho biết số thứ nguyên trong mảng, đối số thứ hai là '4' chỉ định số lượng hàng và đối số thứ ba chỉ định số lượng cột Nói cách khác, bạn có thể nói rằng mảng ngoài cùng có ba mảng bên trong, mỗi mảng trong số ba mảng tiếp theo chứa bốn mảng và cả bốn mảng đều có một phần tử
Định hình lại cột thành hàngPhương thức reshape() không thay đổi dữ liệu cột thành hàng nhưng nó thay đổi hình dạng của mảng là kích thước của mảng Do đó, chúng ta chỉ có thể hoán đổi kích thước của một mảng bằng phương thức reshape() Ví dụ sau minh họa cách định hình lại hoán đổi kích thước Mã số import numpy as npm import numpy as np a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) output_array = np.reshape(a, (2, 5)) print("2D array after converting: ", output_array)6 đầu ra Chúng tôi đã sử dụng chức năng transpose() của NumPy để thay đổi dữ liệu cột thành dữ liệu hàng
Định hình lại hàng thành cộtTheo cách tương tự, nếu một mảng có ba hàng và hai cột, việc định hình lại sẽ thay đổi kích thước sao cho mảng mới có ba cột và hai hàng. Hãy xem xét đoạn mã sau Mã số import numpy as npm import numpy as np a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) output_array = np.reshape(a, (2, 5)) print("2D array after converting: ", output_array)7 đầu ra
Định hình lại mảng không đồng đềuNếu một mảng không đồng đều, phương thức định hình lại sẽ không thể khớp tất cả các phần tử vào một mảng mới Điều này là do mảng không đều có số phần tử lẻ, khi bạn định dạng lại mảng kiểu này thì phải còn 1 phần tử để đưa vào mảng mới. Do đó, một lỗi sẽ được ném. Xem xét ví dụ sau Mã số import numpy as npm import numpy as np a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) output_array = np.reshape(a, (2, 5)) print("2D array after converting: ", output_array)8 đầu ra
Định hình lại hình ảnhBạn có thể định hình lại một mảng hình ảnh bằng phương pháp định hình lại. Trước tiên, bạn cần nhập hình ảnh và sau đó chuyển đổi hình ảnh thành một mảng Sau đó, chúng tôi sẽ định hình lại mảng và cuối cùng chuyển đổi mảng đã định hình lại thành hình ảnh. Chúng ta sẽ áp dụng phương thức reshape() cho hình sau Hãy xem xét ví dụ dưới đây Mã số import numpy as npm import numpy as np a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) output_array = np.reshape(a, (2, 5)) print("2D array after converting: ", output_array)9 Chúng tôi đã chuyển đổi hình ảnh sang thang độ xám để đơn giản hóa việc định hình lại. Sau đó lưu trữ mảng hình ảnh trong một biến.
import numpy as np a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) output_array = np.reshape(a, (3, 4))0 đầu ra
Định hình lại các mảng lớn/lỗi némKhi bạn không chỉ định đúng kích thước để định hình lại một mảng, phương thức reshape() sẽ báo lỗi. Sự cố này thường xảy ra khi bạn định hình lại một mảng có kích thước lớn Ví dụ: khi định hình lại mảng của hình ảnh, mảng có kích thước khá lớn. Do đó ta cần chọn kích thước phù hợp để định hình lại mảng Kích thước của mảng là 1.440.000. Bây giờ chúng ta cần tìm ra kích thước phù hợp để định hình lại mảng. Ta sẽ tìm thừa số của 1200 Trong ví dụ trước, chúng ta chia 1200 cho 1. 5 và nhân 1200 với 1. 5 lần lượt cho chúng ta 800 và 1800 Lỗi bộ nhớNếu bạn có một mảng có kích thước lớn hơn, phương thức reshape() sẽ báo lỗi bộ nhớ. Lỗi bộ nhớ xuất hiện khi bạn thiếu RAM và bạn phải tải toàn bộ tập dữ liệu vào bộ nhớ Một khái niệm gọi là xử lý hàng loạt đã được giới thiệu để giải quyết các lỗi bộ nhớ
NumPy định hình lại () Vs NumPy chuyển đổi ()Sự khác biệt chính giữa NumPy reshape() và transpose() là reshape() đưa ra một hình dạng mới cho mảng trong khi đó, hoán vị đảo ngược các trục Phương pháp chuyển vị chỉ thay đổi hàng thành cột hoặc cột thành hàng (trục đảo ngược). Phương thức định hình lại sẽ lấy một mảng đầu vào và định dạng mảng thành hình dạng đã cho Hình dạng này có thể có bất kỳ kích thước nào và bất kỳ số lượng cột nào theo kích thước của mảng Mã số import numpy as np a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) output_array = np.reshape(a, (3, 4))1 đầu ra Trong ví dụ trên, bạn có thể thấy rằng phương thức reshape() đã thay đổi kích thước của mảng từ 4D thành 2D và số lượng cột từ 3 thành 6 Trong khi đó, transpose() là một hàm hằng chỉ thực hiện một thao tác chuyển hàng thành cột và cột thành hàng
Định hình lại NumPy() so với thay đổi kích thước NumPy()Cả hai phương thức reshape() và resize() của mô-đun NumPy đều được sử dụng để xác định kích thước mới của một mảng. Sự khác biệt chính giữa hai phương thức là phương thức reshape() không thực hiện thay đổi đối với mảng ban đầu mà trả về một mảng mới làm đầu ra Trong khi đó, phương thức thay đổi kích thước () thực hiện các thay đổi trực tiếp đối với mảng ban đầu và trả về mảng ban đầu. Các ví dụ mã sau đây cho biết rõ ràng sự khác biệt giữa reshape() và resize() Sử dụng định hình lại() import numpy as np a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) output_array = np.reshape(a, (3, 4))2 đầu ra Ở đầu ra trên, mảng ban đầu vẫn giữ nguyên Sử dụng thay đổi kích thước() import numpy as np a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) output_array = np.reshape(a, (3, 4))3 đầu ra Như được hiển thị trong đoạn mã trên, phương thức thay đổi kích thước () đã thực hiện các thay đổi đối với mảng ban đầu. Phương thức thay đổi kích thước () không trả về bất kỳ thứ gì;
NumPy định hình lại () so với NumPy làm phẳng ()Phương thức reshape() định hình lại một mảng thành một hình dạng khác. Phương thức NumPy flatten() như tên gọi làm phẳng một mảng. Phương thức flatten() chuyển đổi một mảng có kích thước bất kỳ thành 1 chiều. Cú pháp của flatten() như sau cú pháp import numpy as np a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) output_array = np.reshape(a, (3, 4))4 Nó sẽ trả về mảng 1 chiều. Nó không thay đổi mảng ban đầu
Ví dụ sau giải thích cách hoạt động của flatten() Mã số import numpy as np a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) output_array = np.reshape(a, (3, 4))5 đầu ra Phương thức flatten() không thay đổi mảng ban đầu. Mảng đầu vào là ba chiều và được làm phẳng thành 1D bằng phương thức flatten()
Mokhtar Ebrahim Mokhtar là người sáng lập LikeGeek. com. Anh ấy làm quản trị viên hệ thống Linux từ năm 2010. Ông chịu trách nhiệm duy trì, bảo mật và khắc phục sự cố máy chủ Linux cho nhiều khách hàng trên khắp thế giới. Anh ấy thích viết các tập lệnh shell và Python để tự động hóa công việc của mình |