Hướng dẫn python argmax without numpy - python argmax không có numpy

import numpy as np9 mà không bị numpy

Hàm

import numpy as np
9 rất hữu ích, nó trả về chỉ số của phần tử tối đa (đầu tiên) của một mảng. Cách dễ nhất để sử dụng điều này là nhập khẩu Numpy, nhưng Numpy là một mô -đun rất lớn. Chúng ta có thể viết một chức năng tương tự bằng cách sử dụng hàm
array_1 = np.array([1,5,7,2,10,9,8,4])
print(np.max(array_1))

# Output
10
1 tích hợp với đối số
array_1 = np.array([1,5,7,2,10,9,8,4])
print(np.max(array_1))

# Output
10
2 của nó.

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
10
1 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
10
4 đến
array_1 = np.array([1,5,7,2,10,9,8,4])
print(np.max(array_1))

# Output
10
5 và đối số
array_1 = np.array([1,5,7,2,10,9,8,4])
print(np.max(array_1))

# Output
10
2 cho hàm
array_1 = np.array([1,5,7,2,10,9,8,4])
print(np.max(array_1))

# Output
10
1 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
10
2 á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
10
9 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
10
9, 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
10
9, đó 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

  • Cách tìm chỉ mục của phần tử tối đa trong mảng NumPy
  • Sử 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
  • Chỉ mục của phần tử tối đa dọc theo hàng (trục = 0)
  • 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 ()
  • Sự kết luận

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 NumPy
  • Sử 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
    • Sử dụng NumPy argmax () để tìm chỉ mục của phần tử tối đa trong mảng 2D
    • Chỉ mục của phần tử tối đa dọc theo hàng (trục = 0)
    • 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 ()
    • Sự kết luận
    • 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.

Cách tìm chỉ mục của phần tử tối đa trong mảng NumPy

Sử 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 ()

  • Sự kết luận
  • 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ú 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.
    np.where (điều kiện, x, y) trả về:

    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ể).
    – Các phần tử từ y khi điều kiện là Sai.

    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.

    • Trong mảng_1, giá trị lớn nhất của 10 xuất hiện ở chỉ mục 4, sau khi lập chỉ mục bằng không. Phần tử đầu tiên ở chỉ số 0; phần tử thứ hai ở chỉ mục 1, v.v.
    • Để tìm chỉ mục tại đó giá trị lớn nhất xảy ra, bạn có thể sử dụng hàm NumPy where (). np.where (điều kiện) trả về một mảng tất cả các chỉ số trong đó điều kiện là Đúng.
    • Bạn sẽ phải nhấn vào mảng và truy cập mục ở chỉ mục đầu tiên. Để tìm giá trị lớn nhất xảy ra ở đâu, chúng ta đặt điều kiện là array_1 == 10; nhớ lại rằng 10 là giá trị lớn nhất trong mảng_1.

    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 2D

    Chỉ 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 np
    0

    Đầ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:

    • Đối với cột đầu tiên ở chỉ mục 0, giá trị lớn nhất 10 xuất hiện ở hàng thứ hai, tại chỉ mục = 1.
    • Đối với cột thứ hai ở chỉ mục 1, giá trị lớn nhất 9 xuất hiện ở hàng thứ hai, tại chỉ mục = 1.
    • Đố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.

    Chạy đoạn mã sau và quan sát đầu ra.

    import numpy as np
    1
    import numpy as np
    2

    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 đầu tiên ở chỉ mục 0, giá trị lớn nhất 10 xuất hiện ở hàng thứ hai, tại chỉ mục = 1.
    • Đối với cột thứ hai ở chỉ mục 1, giá trị lớn nhất 9 xuất hiện ở hàng thứ hai, tại chỉ mục = 1.

    Đố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 np
    3

    Chạy đoạn mã sau và quan sát đầu ra.

    import numpy as np
    4

    Bạn có thể phân tích cú pháp đầu ra không?

    import numpy as np
    5

    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 np
    4

    Đố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 np
    8

    Đố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 ()

    • Bạn có thể sử dụng tham số tùy chọn trong hàm NumPy argmax () để lưu trữ đầu ra trong một mảng NumPy.
    • Hãy khởi tạo một mảng các số 0 để lưu trữ đầu ra của lệnh gọi hàm argmax () trước đó – để tìm chỉ số của giá trị lớn nhất dọc theo các cột (trục = 1).
    • Bây giờ, chúng ta hãy xem lại ví dụ về việc tìm chỉ số của phần tử tối đa dọc theo các cột (axis = 1) và thiết lập thành out_arr mà chúng ta đã xác định ở trên.

    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.