Mô-đun NumPy cung cấp một hàm numpy.where () để chọn các phần tử dựa trên một điều kiện. Nó trả về các phần tử được chọn từ a hoặc b tùy thuộc vào điều kiện.
Ví dụ: nếu tất cả các đối số -> điều kiện, a & b được chuyển vào numpy.where () thì nó sẽ trả về các phần tử được chọn từ a & b tùy thuộc vào các giá trị trong mảng bool được tạo bởi điều kiện.
Các bài viết liên quan:
Nếu chỉ cung cấp điều kiện, thì hàm này là viết tắt của hàm np.asarray (condition) .nonzero (). Mặc dù nonzero nên được ưu tiên trực tiếp, vì nó hoạt động chính xác cho các lớp con.
Cú pháp:
numpy.where(condition[, x, y])
Tham số:
Đây là các tham số sau trong hàm numpy.where ():
- condition: array_like, bool
Nếu tham số này được đặt thành True, hãy mang lại x, nếu không, hãy mang lại cho y.
- x, y: array_like:
Tham số này xác định các giá trị để chọn. X, y và điều kiện cần phải được phát sóng thành một số hình dạng.
Return:
Hàm này trả về mảng có các phần tử từ x trong đó điều kiện là Đúng và các phần tử từ y ở nơi khác.
Ví dụ 1: np.where ()
import numpy as np a=np.arange(12) b=np.where(a<6,a,5*a) b
Trong đoạn code trên
- Chúng tôi đã tạo một mảng ‘a’ bằng hàm np.arange ().
- Chúng ta đã khai báo biến ‘b’ và gán giá trị trả về của hàm np.where ().
- Chúng tôi đã chuyển mảng ‘a’ trong hàm.
- Cuối cùng, chúng tôi đã cố gắng in giá trị của b.
Trong đầu ra, các giá trị từ 0 đến 5 được giữ nguyên theo điều kiện và các giá trị khác đã được nhân với 5.
Output:
Ví dụ 2: Đối với mảng nhiều chiều
import numpy as np a=np.arange(12) b=np.where([[True, False], [True, True]],[[1, 2], [3, 4]],[[9, 8], [7, 6]]) b
Output:
Ví dụ 3: Phát x, y và điều kiện
import numpy as np x, y = np.ogrid[:3, :4] a=np.where(x > y, x, 10 + y) a
Output:
Trong đoạn code trên
- Chúng tôi đã tạo một mảng ‘a’ bằng hàm np.arange ().
- Chúng tôi đã khai báo biến ‘b’ và gán giá trị trả về của hàm np.where ().
- Chúng ta đã chuyển một mảng nhiều chiều gồm boolean dưới dạng điều kiện và x và y dưới dạng mảng số nguyên.
- Cuối cùng, chúng tôi đã cố gắng in giá trị của b.
Trong đầu ra, giá trị x đã được so sánh với giá trị y nếu nó thỏa mãn điều kiện, thì nó sẽ được in ra giá trị x, ngược lại, nó sẽ in ra giá trị y, giá trị này đã được chuyển làm đối số trong hàm where ().
Ví dụ 4: Truyền giá trị cụ thể
x=np.array([[0,1,2],[0,2,5],[0,4,8]]) y=np.where(x<4,x,-2) y
Output:
Các câu hỏi phổ biến về numpy.where() trong Python
- Numpy.where() là gì?
- numpy.where() là một hàm trong thư viện numpy của Python, được sử dụng để tạo một mảng mới dựa trên các điều kiện được chỉ định.
- Cú pháp của numpy.where() là gì?
- numpy.where(condition[, x, y])
- Các tham số của numpy.where() là gì?
- condition: Điều kiện để kiểm tra. Nếu điều kiện đúng, sẽ được lấy giá trị từ x, ngược lại lấy giá trị từ y.
- x: Giá trị được trả về nếu điều kiện là đúng. Nếu không được chỉ định, một mảng các chỉ mục được trả về.
- y: Giá trị được trả về nếu điều kiện là sai. Nếu không được chỉ định, một mảng các chỉ mục được trả về.
- Các ví dụ về sử dụng numpy.where() là gì?
- Tạo một mảng mới dựa trên điều kiện:
import numpy as np arr = np.array([1, 2, 3, 4, 5]) new_arr = np.where(arr < 3, 0, 1) print(new_arr)
Kết quả: [0 0 1 1 1]
- Tìm các chỉ mục của một mảng thỏa mãn điều kiện:
import numpy as np arr = np.array([1, 2, 3, 4, 5]) indexes = np.where(arr > 3) print(indexes)
Kết quả: (array([3, 4]),)
- Sử dụng numpy.where() với mảng hai chiều:
import numpy as np arr = np.array([[1, 2], [3, 4]]) new_arr = np.where(arr > 2, arr, 0) print(new_arr)
Kết quả: [[0 0] [3 4]]
- Lưu ý khi sử dụng numpy.where()
- Nếu chỉ truyền một tham số cho numpy.where(), nó sẽ trả về các chỉ mục thỏa mãn điều kiện.
- Nếu truyền cả hai tham số x và y, chúng phải có cùng số chiều với nhau.
- Có thể sử dụng numpy.logical_and() và numpy.logical_or() để tạo điều kiện phức tạp hơn.
- Các ứng dụng của numpy.where()
- Tìm kiếm các chỉ mục thỏa mãn điều kiện trong mảng.
- Thay thế các giá trị trong mảng dựa trên điều kiện.
- Tạo một mảng mới dựa trên một mảng hiện có và các điều kiện.
- Sự khác biệt giữa numpy.where() và Python’s ternary operator
- Numpy.where() có thể áp dụng cho các mảng nhiều chiều, trong khi ternary operator chỉ áp dụng cho các biểu thức đơn giản.
- Numpy.where() sử dụng một cách hiệu quả hơn khi xử lý các mảng lớn.
- Ternary operator chỉ trả về một giá trị, trong khi numpy.where() có thể trả về một mảng mới hoặc các chỉ mục trong mảng gốc.
- Tại sao lại sử dụng numpy.where()?
- Numpy.where() cho phép xử lý các mảng lớn với hiệu suất tốt hơn so với sử dụng các vòng lặp hoặc các cấu trúc điều khiển khác trong Python.
- Có thể thực hiện các phép toán phức tạp trên mảng nhanh chóng và dễ dàng với numpy.where().
- Các hàm liên quan đến numpy.where()
- numpy.select(): Trả về một mảng mới dựa trên các điều kiện được chỉ định.
- numpy.nonzero(): Trả về các chỉ mục của các phần tử khác không trong mảng.
- numpy.extract(): Trích xuất các phần tử từ một mảng dựa trên một điều kiện cho trước.