np.argmax là gì

Numpy là điều duy nhất khiến tôi, một lập trình viên C ++ khó tính, chuyển sang dùng python ngay từ đầu. Xin lưu ý bạn, đây là trước đường cong học tập khoa học dữ liệu của tôi, nơi không ai có thể sống sót nếu không có trăn! [Không xúc phạm, xin vui lòng, chỉ nói rõ ý kiến ​​của tôi, tất cả những người yêu thích R, tôi tôn trọng tất cả các bạn như nhau]. Nhưng nếu một thư viện có thể thay đổi lòng trung thành của tôi với một ngôn ngữ lập trình, thì đó phải là một thư viện địa ngục.

Trong phòng thí nghiệm người máy mà tôi đã thực tập cùng một lúc, chúng tôi thường đố nhau về những lệnh Numpy kỳ lạ, và đó là lúc tôi thực sự thấy được vẻ đẹp của thư viện này. Vì vậy, nếu bạn vượt qua bài kiểm tra sau, bằng mọi cách, bạn không cần blog này: P. Nhưng nếu không, hãy tiếp tục đọc !!

Kiểm tra: Dự đoán đầu ra của phần sau

import numpy as np arr = np.arange[5] arr = arr[-1::-1] print[arr]

Đầu ra là [4,3,2,1,0]

Hãy đi sâu vào các chức năng của Numpy giúp nó trở thành cứu cánh cho chúng ta, đặc biệt là đối với tôi vì tôi ghét viết double for các vòng lặp để truy cập vào một mảng 2D.

Lưu ý: Trong tất cả các ví dụ trong tương lai, tôi đã giả định rằng nhập numpy dưới dạng np đã được gọi

1. numpy.arange [bắt đầu, dừng, bước]

Hàm này trả về một mảng numpy có chứa các số bắt đầu từ đầu kết thúc trước khi dừng và tăng dần theo sự khác biệt của bước. Vì vậy, các con số nằm trong khoảng thời gian [bắt đầu, dừng lại].

Ví dụ,

>>> np.arange[3,7,2] array[[3, 5]] >>> np.arange[5] array[[0,1,2,3,4]]

Nếu bạn muốn xem các cách khác để xác định và khởi tạo một mảng, tôi đã đề cập đến chúng trong blog trước của tôi tại đây .

2. numpy.random

numpy.random là một mô-đun trong NumPy có chứa các hàm được sử dụng để tạo số ngẫu nhiên. Nó có thể được sử dụng cho một số mục đích và đặc biệt quan trọng khi chúng ta xử lý các hàm dựa trên xác suất. Hãy xem xét một vài ví dụ về các chức năng khác nhau từ mô-đun này. Các kết quả đầu ra được hiển thị bên dưới sẽ thay đổi khi bạn sử dụng các lệnh tương tự vì chúng được tạo ngẫu nhiên.

#Create an array of random numbers, size of array is [3,2] >>> np.random.rand[3,2] array[[[ 0.14022471, 0.96360618], #random [ 0.37601032, 0.25528411], #random [ 0.49313049, 0.94909878]]] #random #Return random integers from low [inclusive] to high [exclusive] or 0 [inclusive] to low[exclusive], random.randint[low, high=None, size=None, dtype=int] >>> np.random.randint[2, size=10] array[[1, 0, 0, 0, 1, 1, 0, 0, 1, 0]] # random >>> np.random.randint[5] 1

Các chức năng tương tự : numpy.random.randn , numpy.random.random_sample , numpy.random.choice .

3. numpy.argmax [arr, axis = Không có]

Rất nhiều trường hợp sử dụng của chúng tôi, đặc biệt là khi thực hiện tối ưu hóa, yêu cầu chúng tôi biết biến có giá trị lớn nhất hoặc nhỏ nhất. Để loại bỏ các dòng mã thừa để theo dõi thông tin này, chúng ta có thể chỉ cần sử dụng các hàm numpy của argmax và argmin. Hãy xem một ví dụ tương tự. Các ví dụ sau đây chứa trục thuật ngữ. Trục của một mảng là hướng mà chúng ta muốn thực hiện các phép tính. Nếu chúng tôi không chỉ định một trục, thì các tính toán được thực hiện trên toàn bộ mảng theo mặc định.

>>> a = np.array[[[10, 12, 11],[13, 14, 10]]] >>> np.argmax[a] 4 #since if the array is flattened, 14 is at the 4th index >>> np.argmax[a, axis=0] array[[1, 1, 0]] # index of max in each column >>> np.argmax[a, axis=1] array[[2, 1]] # index of max in each row

4. Cắt và lập chỉ mục

Điều này đóng một vai trò quan trọng trong việc thay đổi nội dung của một mảng NumPy. Nó được sử dụng để truy cập nhiều phần tử của một mảng cùng một lúc. Lấy một ví dụ sẽ giúp bạn dễ hiểu hơn về cách hoạt động của nó.

>>> a = np.arange[5] >>> print[a[4]] 4 # number at index >>> print[a[1:]] array[[1, 2, 3, 4]] #it will print all element from index 1 to last [including number at index 1] >>> print[a[:2]] array[[0, 1]] #it will print all element from index 0 to index 2[excluding number at index 2] >>> print[a[1:3]] array[[1, 2]] #it will print all element from index 1 [including] to index 3 [excluding] >>> print[a[0:4:2]] array[[0,2]] # [0:4:2] represents start index, stop index, and step respectively. It will start from index 0 [inclusive] go to index 4 [exclusive] in step of 2 which will result in [0, 2] and a[0,2] will be the output.

Quay trở lại bài kiểm tra mà tôi đã đưa ra ở đầu blog, phép thuật ở đó đang sử dụng phép cắt. Khi chúng tôi viết arr [-1 :: - 1] về cơ bản nó bắt đầu từ phần tử cuối cùng của arr và sau đó -1 thứ hai đảm bảo rằng nó đi theo thứ tự ngược lại với kích thước bước 1. Do đó chúng tôi nhận được mảng đảo ngược.

5. numpy.setdiff1d [ AR1 , AR2 ]

Khi chúng ta cần xử lý các mảng của mình như các tập hợp và tìm sự khác biệt, giao điểm hoặc liên hợp của chúng, numpy giúp công việc trở nên dễ dàng bằng các hàm có sẵn này.

#Set difference >>> a = np.array[[1, 2, 3, 2, 4, 1]] >>> b = np.array[[3, 4, 5, 6]] >>> np.setdiff1d[a, b] array[[1, 2]] #Set intersection >>> np.intersect1d[[1, 3, 4, 3], [3, 1, 2, 1]] array[[1, 3]] #Set Union >>> np.union1d[[-1, 0, 1], [-2, 0, 2]] array[[-2, -1, 0, 1, 2]]

6. numpy.reshape [ a , newshape , order = 'C' ]

Khi xử lý ma trận, chúng ta cần các kích thước thích hợp khi nhân và tương tự. Hoặc ngay cả khi xử lý dữ liệu phức tạp, tôi đã phải thay đổi hình dạng các mảng của mình không biết bao nhiêu lần.

>>> a = np.arange[6].reshape[[3, 2]] >>> a array[[[0, 1], [2, 3], [4, 5]]] >>> np.reshape[a, [2, 3]] # C-like index ordering array[[[0, 1, 2], [3, 4, 5]]] >>> np.reshape[a, [2, 3], order='F'] # Fortran-like index ordering array[[[0, 4, 3], [2, 1, 5]]]

Các chức năng tương tự: ndarray.flatten , numpy.ravel . Cả hai điều này đều thay đổi bất kỳ mảng nào thành mảng 1D, nhưng có sự khác biệt nhỏ giữa hai mảng. Ngoài ra, các hàm như numpy.squeeze và numpy.unsqueeze được sử dụng để xóa hoặc thêm một thứ nguyên trong mảng.

7. numpy.where [ điều kiện [, x , y ] ]

np.where giúp chúng ta trích xuất một mảng con liên quan đến một số điều kiện mà chúng ta nhập vào hàm. Ở đây nếu điều kiện được thỏa mãn thì x được chọn hoặc y . Hãy xem một số ví dụ để hiểu thêm

>>> np.where[[[True, False], [True, True]], ... [[1, 2], [3, 4]], #x ... [[9, 8], [7, 6]]] #y #Here since the second element in first row was false the output contained the element from the second array at that index. >>> a = np.arange[10] >>> a array[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]] >>> np.where[a < 5, a, 10*a] array[[ 0, 1, 2, 3, 4, 50, 60, 70, 80, 90]]

8. numpy.concatenate [ [a1 , a2 , …] , axis = 0 ]

Hàm này giúp nối các mảng dọc theo một trục hiện có. Nó có lợi khi chúng tôi xử lý trước dữ liệu và cần nối thêm hoặc kết hợp nhiều lần.

>>> a = np.array[[[1, 2], [3, 4]]] >>> b = np.array[[[5, 6]]] >>> np.concatenate[[a, b], axis=0] array[[[1, 2], [3, 4], [5, 6]]] >>> np.concatenate[[a, b.T], axis=1] array[[[1, 2, 5], [3, 4, 6]]] >>> np.concatenate[[a, b], axis=None] array[[1, 2, 3, 4, 5, 6]]

9. numpy.power [ x1 , x2]

Tôi không thể cho bạn biết chức năng này đã làm cho cuộc sống của tôi thực sự dễ dàng hơn bao nhiêu. Nó đã giúp tôi thay thế tất cả các vòng lặp tôi đã sử dụng để viết thành hình vuông hoặc hình lập phương toàn bộ một mảng. Hàm này xuất ra một mảng có chứa các phần tử của mảng đầu tiên được nâng lên thành lũy thừa từ mảng thứ hai, theo phần tử. Hãy để tôi chỉ cho bạn một ví dụ để làm rõ ràng mọi thứ.

>>> x1 = np.arange[6] >>> x1 [0, 1, 2, 3, 4, 5] >>> np.power[x1, 3] array[[ 0, 1, 8, 27, 64, 125]] >>> x2 = [1.0, 2.0, 3.0, 3.0, 2.0, 1.0] >>> np.power[x1, x2] array[[ 0., 1., 8., 27., 16., 5.]] >>> x2 = np.array[[[1, 2, 3, 3, 2, 1], [1, 2, 3, 3, 2, 1]]] >>> x2 array[[[1, 2, 3, 3, 2, 1], [1, 2, 3, 3, 2, 1]]] >>> np.power[x1, x2] array[[[ 0, 1, 8, 27, 16, 5], [ 0, 1, 8, 27, 16, 5]]]

Các chức năng tương tự: Tất cả các toán tử toán học cơ bản. Bạn có thể kiểm tra chúng ở đây .

10. numpy.allclose [a, b, rtol = 1e-5, atol = 1e-8]

np.allclose được sử dụng để xác định xem hai mảng có bằng nhau về mặt phần tử trong một dung sai hay không. Giá trị dung sai là dương và một số nhỏ. Nó được tính bằng tổng của [ rtol * abs [ b ]] và atol. Chênh lệch tuyệt đối theo phần tử giữa a và b phải nhỏ hơn dung sai được tính toán .

>>> np.allclose[[1e10,1e-7], [1.00001e10,1e-8]] False >>> np.allclose[[1e10,1e-8], [1.00001e10,1e-9]] True

Các chức năng tương tự: numpy.isclose , numpy.all , numpy.any , numpy.equal

Tôi vui mừng chứng nhận bạn là bậc thầy Numpy ngay bây giờ !!

Hãy thử nghiệm với những điều này, và bạn sẽ sớm trở thành một nhà khoa học dữ liệu bậc thầy! Tất cả những gì tốt nhất.

Để biết thêm nội dung như vậy, hãy theo dõi chúng tôi trên phương tiện . Hãy cho chúng tôi biết trong phần bình luận những chủ đề bạn muốn biết thêm và chúng tôi sẽ thử viết blog về những chủ đề đó.

NumPy là thư viện máy tính khoa học được sử dụng rộng rãi nhất cho Python. Nó là cơ sở cho nhiều thư viện khác như Pandas.

NumPy làm cho nó rất đơn giản và nhanh chóng để hoạt động trên các mảng số lớn. Vì chúng ta có thể có rất nhiều dữ liệu, nên việc có một công cụ siêu hiệu quả như NumPy là rất quan trọng.

Trong bài viết này, chúng ta sẽ xem xét 5 phép toán cần thiết trong phân tích mảng lớn. Các phép toán này cung cấp một số thống kê và đặc điểm của mảng.

1. Count_nonzero

Tên là khá mô tả. Nó đếm số phần tử khác 0 trong một mảng. Có nhiều cách để thực hiện thao tác này nhưng hàm count_nonzero có thể là cách đơn giản nhất.

Hãy tạo một mảng 10000 số nguyên từ 0 đến 10. Sau đó, chúng ta có thể sử dụng hàm đơn giản của mình để đếm các phần tử khác không.

import numpy as np arr = np.random.randint[5, size=10000] np.count_nonzero[arr] 8033

2. Ở đâu

Hàm argwhere trả về các chỉ số của các phần tử khác 0 trong một mảng.

nonzero = np.argwhere[arr] len[nonzero] 8033 arr[:8] array[[4, 2, 1, 4, 3, 0, 3, 2]] nonzero[:8] array[[[0], [1], [2], [3], [4], [6], [7], [8]]]

3. Argmin và argmax

Các hàm này được sử dụng để tìm chỉ số của giá trị nhỏ nhất hoặc lớn nhất trong một mảng.

Lần này, hãy tạo một mảng nhỏ hơn và áp dụng các hàm argmin và argmax.

arr2 = np.array[[4,3,1,6,1,2,6]] np.argmin[arr2] 2 np.argmax[arr2] 3

Tuy nhiên, các giá trị tối thiểu và tối đa này xuất hiện nhiều lần trong mảng. Nếu chúng ta cần tìm chỉ số của tất cả các lần xuất hiện của các giá trị này, chúng ta có thể sử dụng hàm where của NumPy.

4. Ở đâu

Hàm where có thể được sử dụng để tìm các chỉ số của giá trị phù hợp với điều kiện đã chỉ định.

Trong trường hợp các giá trị nhỏ nhất và lớn nhất, chúng ta có thể đặt điều kiện bằng các giá trị này.

np.where[arr2 == arr2.min[]] [array[[2, 4]],] np.where[arr2 == arr2.max[]] [array[[3, 6]],]

Hàm where cũng có thể sửa đổi mảng theo một điều kiện. Hãy làm một ví dụ.

arr2 = np.array[[4,3,1,6,1,2,6]] np.where[arr2 > 3, 1, 0] array[[1, 0, 0, 1, 0, 0, 1]]

5. Sắp xếp và sắp xếp

Cả hai hàm này đều có thể được sử dụng để lấy một phiên bản được sắp xếp của một mảng.

  • Argsort trả về các chỉ số của mảng đã sắp xếp.
  • Sắp xếp trả về các giá trị của mảng đã sắp xếp.
  • arr2 = np.array[[4,3,1,6,1,2,6]] np.sort[arr2] array[[1, 1, 2, 3, 4, 6, 6]] np.argsort[arr2] array[[2, 4, 5, 1, 0, 3, 6]]

NumPy được chứng minh là một thư viện máy tính khoa học rất linh hoạt và hiệu quả. Nó phục vụ như một cơ sở cho nhiều thư viện Python như Pandas. Vì vậy, nó là một công cụ cơ bản để học cho các nhà khoa học dữ liệu đầy tham vọng.

Cảm ơn bạn đã đọc. Vui lòng cho tôi biết nếu bạn có bất kỳ phản hồi nào.

Video liên quan

Chủ Đề