Câu trả lời cũ
nó là loại khó hiểu. Nó cung cấp cho bạn VỊ TRÍ (tất cả chúng) về nơi mà trạng thái của bạn là đúng.
vì thế:
>>> a = np.arange(100)
>>> np.where(a > 30)
(array([31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
99]),)
>>> np.where(a == 90)
(array([90]),)
a = a*40
>>> np.where(a > 1000)
(array([26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
94, 95, 96, 97, 98, 99]),)
>>> a[25]
1000
>>> a[26]
1040
Tôi sử dụng nó như một sự thay thế cho list.index (), nhưng nó cũng có nhiều cách sử dụng khác. Tôi chưa bao giờ sử dụng nó với mảng 2D.
http://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html
Câu trả lời mới
Có vẻ như người đó đang hỏi một điều gì đó cơ bản hơn.
Câu hỏi đặt ra là làm thế nào BẠN có thể triển khai thứ gì đó cho phép một chức năng (chẳng hạn như ở đâu) biết những gì được yêu cầu.
Trước tiên, hãy lưu ý rằng việc gọi bất kỳ toán tử so sánh nào sẽ làm một điều thú vị.
a > 1000
array([False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True`, True, True, True, True, True, True, True, True, True], dtype=bool)`
Điều này được thực hiện bằng cách nạp chồng phương thức "__gt__". Ví dụ:
>>> class demo(object):
def __gt__(self, item):
print item
>>> a = demo()
>>> a > 4
4
Như bạn có thể thấy, "a> 4" là mã hợp lệ.
Bạn có thể nhận được danh sách đầy đủ và tài liệu về tất cả các hàm quá tải tại đây: http://docs.python.org/reference/datamodel.html
Một điều không thể tin được là nó đơn giản như thế nào để làm điều này. Tất cả các hoạt động trong python được thực hiện theo cách như vậy. Nói a> b tương đương với a. gt (b)!
numpy.wherecó 2 'chế độ hoạt động', một chế độ đầu tiên trả vềindices, ở đâucondition is Truevà nếu các tham số tùy chọnxvàycó mặt (cùng hình dạngconditionhoặc có thể phát sóng với hình dạng đó!), Nó sẽ trả về giá trị từxkhi nàocondition is Truekhácy. Vì vậy, điều này làm chowherelinh hoạt hơn và cho phép nó được sử dụng thường xuyên hơn. Cảm ơn