Bạn có thể chỉnh sửa một mảng trong python không?

Trong bài đăng này, tôi sẽ đề cập đến các cách thao tác với hình dạng của một mảng trong NumPy bằng các thao tác sau

  • định hình lại
  • Expand_dims
  • Ravel và Flatten

Nếu bạn muốn đọc về những điều cơ bản của NumPy, bạn có thể truy cập bài đăng sau

Công cụ bị đánh giá thấp nhất trong Khoa học dữ liệu. NumPy

Sức mạnh của NumPy và cách sử dụng hiệu quả

hướng tới khoa học dữ liệu. com

Hãy bắt đầu với việc nhập NumPy

import numpy as np

Mẹo. Mảng NumPy hiệu quả hơn nhiều so với danh sách về mặt lưu trữ và xử lý

định hình lại

Numpy cung cấp các công cụ linh hoạt để thay đổi kích thước của mảng. Trước khi thay đổi kích thước, tốt hơn hết bạn nên nhớ kích thước của một mảng có nghĩa là gì và các mảng có kích thước khác nhau trông như thế nào

a = np.random.randint[10, size=5]
a
array[[9, 7, 3, 7, 5]]
a.ndim
1
a.shape
[5,0]

Chúng ta cũng có thể tạo các mảng nhiều chiều với numpy

# 2-dimensional
b = np.zeros[[3,4]]
b
array[[[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]]]
b.ndim
2
# 3-dimensional
c = np.ones[[2,2,2]]
c
array[[[[1., 1.],
[1., 1.]],

[[1., 1.],
[1., 1.]]]]
c.ndim
3

Có nhiều cách khác nhau để thay đổi kích thước của một mảng. Hàm định hình lại thường được sử dụng để sửa đổi hình dạng và do đó kích thước của một mảng. Chúng ta chỉ cần chuyển hình dạng mới làm đối số để định hình lại chức năng

Mẹo. Tôi sử dụng các cách khác nhau khi tạo mảng cho các ví dụ để bạn cũng sẽ làm quen với việc tạo mảng

np.arange[6]
array[[0, 1, 2, 3, 4, 5]]
np.arange[6].reshape[2,3]
array[[[0, 1, 2],
[3, 4, 5]]]

Định hình lại [2,3] trả về một mảng mới có 2 hàng và 3 cột là 2 chiều. Vậy mảng mà chúng ta áp dụng reshape[2,3] phải có 6 phần tử

Hãy cũng tạo một mảng 3 chiều bằng cách sử dụng định hình lại

np.arange[8].reshape[2,2,2]array[[[[0, 1],         
[2, 3]],
[[4, 5],
[6, 7]]]]

Một tính năng rất hữu ích của hàm định hình lại là nếu bạn không biết số lượng phần tử trong mảng ban đầu, bạn có thể chỉ định một trong các kích thước là “-1”

Vì hầu như chúng ta luôn làm việc với các mảng rất lớn, nên cũng thuận tiện khi gõ [-1,1] thay vì [100000,1]

Mẹo. Khi định hình lại mảng, hình dạng mới cần tương thích với hình dạng ban đầu

np.arange[6].reshape[-1,2]
array[[[0, 1],
[2, 3],
[4, 5]]]
np.arange[6].reshape[-1,3]
array[[[0, 1, 2],
[3, 4, 5]]]

Cũng có thể tăng kích thước mà không thay đổi trình tự các phần tử. Chúng ta có thể đạt được nó bằng cách reshape[-1,1] hoặc [1,-1]

np.random.normal[0,1,3]
array[[-0.14788456, 0.01909406, 0.88659889]]
np.random.normal[0,1,3].reshape[-1,1]
array[[[-0.14588167],
[ 0.06871804],
[ 2.32699261]]]
np.random.normal[0,1,3].reshape[1,-1]
array[[[ 1.46812451, 0.48818206, -0.80228877]]]
Mở rộng_dims

Như tên gợi ý, expand_dims mở rộng hình dạng của một mảng

a = np.array[[1,2,3]]np.expand_dims[a, axis=0]
array[[[1, 2, 3]]]
np.expand_dims[a, axis=1]
array[[[1],
[2],
[3]]]

tham số trục cho phép chọn thông qua trục nào việc mở rộng được thực hiện

expand_dims với axis=1 tương đương với reshape[-1,1]

np.expand_dims[a, axis=1]
array[[[1],
[2],
[3]]]
np.expand_dims[a, axis=1]
array[[[1],
[2],
[3]]]
Ravel và Flatten

Ravel trả về một mảng phẳng. Nếu bạn đã quen thuộc với các mạng thần kinh tích chập [CNN], các bản đồ tính năng tổng hợp sẽ được làm phẳng trước khi cấp dữ liệu cho lớp được kết nối đầy đủ. Thao tác này đang chuyển đổi mảng 2-D thành mảng 1-D

a = np.random.randint[10, size=[2,3]]
a
array[[[6, 8, 2],
[5, 1, 8]]]
np.ravel[a]
array[[6, 8, 2, 5, 1, 8]]

Hàng thứ hai được nối vào cuối hàng đầu tiên. Hàm Ravel cũng cho phép nối theo cột bằng cách sử dụng tham số thứ tự

a = np.random.randint[10, size=5]
a
array[[9, 7, 3, 7, 5]]
a.ndim
1
a.shape
[5,0]
0

Flatten cũng thực hiện thao tác tương tự

a = np.random.randint[10, size=5]
a
array[[9, 7, 3, 7, 5]]
a.ndim
1
a.shape
[5,0]
1

Sự khác biệt giữa ravel và làm phẳng

  • Ravel. Trả về dạng xem của mảng ban đầu khi có thể
  • làm phẳng. Luôn trả về một bản sao của mảng ban đầu

Do đó, những thay đổi bạn thực hiện trên mảng trả về bằng cách làm phẳng sẽ không bao giờ được thực hiện trên mảng ban đầu. Tuy nhiên, nếu bạn sửa đổi mảng trả về bởi ravel, bạn cũng có thể thay đổi mảng ban đầu. Hãy đi qua một ví dụ để làm cho nó rõ ràng

Chúng ta có thể sửa đổi mảng trong Python không?

Thay đổi phần tử mảng trong Python . it is even possible to change multiple elements of an array at once by using the slice operator.

Bạn có thể sửa đổi một mảng?

Nếu bạn đã nhập công thức mảng một ô, chọn ô, nhấn F2, thực hiện thay đổi, rồi nhấn Ctrl+Shift+Enter..

Chủ Đề