Hướng dẫn python argmax without numpy - python argmax không có numpy
Hàm Show
def argmax(x): return max(range(len(x)), key=lambda i: x[i]) Ở đây, đối số đầu tiên của array_1 = np.array([1,5,7,2,10,9,8,4]) print(np.max(array_1)) # Output 101 là một danh sách từ array_1 = np.array([1,5,7,2,10,9,8,4]) print(np.max(array_1)) # Output 104 đến array_1 = np.array([1,5,7,2,10,9,8,4]) print(np.max(array_1)) # Output 105 và đối số array_1 = np.array([1,5,7,2,10,9,8,4]) print(np.max(array_1)) # Output 102 cho hàm array_1 = np.array([1,5,7,2,10,9,8,4]) print(np.max(array_1)) # Output 101 một hàm để sử dụng để so sánh và trả về phần tử lớn nhất. Trong trường hợp này, hàm array_1 = np.array([1,5,7,2,10,9,8,4]) print(np.max(array_1)) # Output 102 ánh xạ các chỉ số của danh sách array_1 = np.array([1,5,7,2,10,9,8,4]) print(np.max(array_1)) # Output 109 cho các phần tử của array_1 = np.array([1,5,7,2,10,9,8,4]) print(np.max(array_1)) # Output 109, sau đó trả về chỉ mục liên quan đến yếu tố lớn nhất của array_1 = np.array([1,5,7,2,10,9,8,4]) print(np.max(array_1)) # Output 109, đó chính xác là những gì chúng tôi muốn. Trong hướng dẫn này, bạn sẽ học cách sử dụng hàm NumPy argmax () để tìm chỉ số của phần tử tối đa trong mảng. Nội dung chính ShowShow
NumPy là một thư viện mạnh mẽ cho tính toán khoa học bằng Python; nó cung cấp mảng N-chiều có hiệu suất cao hơn danh sách Python. Một trong những thao tác phổ biến bạn sẽ thực hiện khi làm việc với mảng NumPy là tìm giá trị lớn nhất trong mảng. Tuy nhiên, đôi khi bạn có thể muốn tìm chỉ mục tại đó giá trị lớn nhất xảy ra. Hàm argmax () giúp bạn tìm chỉ số của giá trị lớn nhất trong cả mảng một chiều và nhiều chiều. Chúng ta hãy tiến hành tìm hiểu cách thức hoạt động của nó.
Cách tìm chỉ mục của phần tử tối đa trong mảng NumPySử dụng NumPy argmax () để tìm chỉ mục của phần tử tối đa Sử dụng NumPy argmax () để tìm chỉ mục của phần tử tối đa trong mảng 2D import numpy as np Chỉ mục của phần tử tối đa dọc theo hàng (trục = 0) array_1 = np.array([1,5,7,2,10,9,8,4]) print(np.max(array_1)) # Output 10 Chỉ mục của phần tử tối đa dọc theo cột (trục = 1) Sử dụng Tham số tùy chọn ra trong NumPy argmax () Hàm argmax () giúp bạn tìm chỉ số của giá trị lớn nhất trong cả mảng một chiều và nhiều chiều. Chúng ta hãy tiến hành tìm hiểu cách thức hoạt động của nó. Cú pháp của hàm NumPy argmax () Share this post! print(int(np.where(array_1==10)[0])) # Output 4 Để làm theo hướng dẫn này, bạn cần cài đặt Python và NumPy. Bạn có thể viết mã bằng cách khởi động Python REPL hoặc khởi chạy sổ ghi chép Jupyter. Đầu tiên, hãy nhập NumPy với bí danh thông thường là np. Bạn có thể sử dụng hàm NumPy max () để nhận giá trị lớn nhất trong một mảng (tùy chọn dọc theo một trục cụ thể). Trong trường hợp này, np.max (array_1) trả về 10, điều này đúng. Giả sử bạn muốn tìm chỉ mục mà tại đó giá trị lớn nhất xuất hiện trong mảng. Bạn có thể thực hiện phương pháp tiếp cận hai bước sau: Tìm phần tử tối đa. np.argmax(array,axis,out) # we've imported numpy under the alias np Tìm chỉ số của phần tử tối đa.
Chúng tôi đã sử dụng np.where () chỉ với điều kiện, nhưng đây không phải là phương pháp được khuyến nghị để sử dụng hàm này. Sử dụng NumPy argmax () để tìm chỉ mục của phần tử tối đa📑 Lưu ý: Hàm NumPy where ():np.where (điều kiện, x, y) trả về: array_1 = np.array([1,5,7,2,10,9,8,4]) print(np.argmax(array_1)) # Output 4 – Các phần tử từ x khi điều kiện là Đúng, và – Các phần tử từ y khi điều kiện là Sai. Do đó, xâu chuỗi các hàm np.max () và np.where (), chúng ta có thể tìm thấy phần tử lớn nhất, theo sau là chỉ số mà nó xuất hiện. array_1 = np.array([1,5,7,2,10,10,8,4]) print(np.argmax(array_1)) # Output 4 Thay vì quy trình hai bước ở trên, bạn có thể sử dụng hàm NumPy argmax () để lấy chỉ số của phần tử tối đa trong mảng. Sử dụng NumPy argmax () để tìm chỉ mục của phần tử tối đa trong mảng 2DChỉ mục của phần tử tối đa dọc theo hàng (trục = 0) array_2 = array_1.reshape(2,4) print(array_2) # Output [[ 1 5 7 2] [10 9 8 4]] Chỉ mục của phần tử tối đa dọc theo cột (trục = 1) Bây giờ, hãy gọi hàm argmax () trên mảng hai chiều, mảng_2. print(np.argmax(array_2)) # Output 4 Mặc dù chúng ta đã gọi argmax () trên mảng hai chiều, nó vẫn trả về 4. Điều này giống với kết quả đầu ra cho mảng một chiều, mảng_1 từ phần trước. Lý do tại sao điều này xảy ra? 🤔 Điều này là do chúng tôi chưa chỉ định bất kỳ giá trị nào cho tham số trục. Khi tham số trục này không được đặt, theo mặc định, hàm argmax () trả về chỉ số của phần tử lớn nhất dọc theo mảng phẳng. Mảng phẳng là gì? Nếu có một mảng N chiều hình dạng d1 x d2 x… x dN, trong đó d1, d2, lên đến dN là kích thước của mảng dọc theo N kích thước, thì mảng phẳng là một mảng dài một chiều có kích thước d1 * d2 *… * dN. Để kiểm tra mảng phẳng trông như thế nào đối với mảng_2, bạn có thể gọi phương thức flatten (), như được hiển thị bên dưới: array_2.flatten() # Output array([ 1, 5, 7, 2, 10, 9, 8, 4]) Chỉ mục của phần tử tối đa dọc theo hàng (trục = 0)Hãy tiến hành tìm chỉ số của phần tử lớn nhất dọc theo các hàng (trục = 0). import numpy as np0 Đầu ra này có thể hơi khó hiểu, nhưng chúng tôi sẽ hiểu cách hoạt động của nó. Chúng tôi đã đặt thông số trục thành 0 (axis = 0), vì chúng tôi muốn tìm chỉ số của phần tử lớn nhất dọc theo các hàng. Do đó, hàm argmax () trả về số hàng trong đó phần tử lớn nhất xuất hiện — cho mỗi cột trong số ba cột. Hãy hình dung điều này để hiểu rõ hơn. Từ sơ đồ trên và đầu ra argmax (), chúng ta có như sau:
Đây chính là lý do tại sao chúng ta có mảng đầu ra ([1, 1, 1, 1]) vì phần tử lớn nhất dọc theo các hàng xảy ra ở hàng thứ hai (cho tất cả các cột). Chỉ mục của phần tử tối đa dọc theo cột (trục = 1)Tiếp theo, hãy sử dụng hàm argmax () để tìm chỉ số của phần tử lớn nhất dọc theo các cột. Chạy đoạn mã sau và quan sát đầu ra. import numpy as np1 import numpy as np2 Bạn có thể phân tích cú pháp đầu ra không? Chúng tôi đã đặt axis = 1 để tính chỉ số của phần tử lớn nhất dọc theo các cột. Hàm argmax () trả về, đối với mỗi hàng, số cột trong đó giá trị lớn nhất xảy ra. Đây là một lời giải thích trực quan: Từ sơ đồ trên và đầu ra argmax (), chúng ta có như sau:
Đối với cột thứ ba và thứ tư ở chỉ mục 2 và 3, giá trị lớn nhất 8 và 4 đều xuất hiện ở hàng thứ hai, tại chỉ mục = 1. Đây chính là lý do tại sao chúng ta có mảng đầu ra ([1, 1, 1, 1]) vì phần tử lớn nhất dọc theo các hàng xảy ra ở hàng thứ hai (cho tất cả các cột).Chỉ mục của phần tử tối đa dọc theo cột (trục = 1) Tiếp theo, hãy sử dụng hàm argmax () để tìm chỉ số của phần tử lớn nhất dọc theo các cột. import numpy as np3 Chạy đoạn mã sau và quan sát đầu ra. import numpy as np4 Bạn có thể phân tích cú pháp đầu ra không? import numpy as np5 Chúng tôi đã đặt axis = 1 để tính chỉ số của phần tử lớn nhất dọc theo các cột. Hàm argmax () trả về, đối với mỗi hàng, số cột trong đó giá trị lớn nhất xảy ra.Đây là một lời giải thích trực quan: import numpy as np4 Đối với hàng đầu tiên ở chỉ mục 0, giá trị lớn nhất 7 xuất hiện trong cột thứ ba, tại chỉ mục = 2. import numpy as np8 Đối với hàng thứ hai ở chỉ mục 1, giá trị lớn nhất 10 xuất hiện trong cột đầu tiên, tại chỉ mục = 0.Tôi hy vọng bây giờ bạn đã hiểu đầu ra, mảng ([2, 0]) có nghĩa. Sử dụng Tham số tùy chọn ra trong NumPy argmax ()
Chúng ta thấy rằng trình thông dịch Python ném ra một TypeError, vì out_arr đã được khởi tạo thành một mảng float theo mặc định. |