คำตอบเก่า
มันค่อนข้างสับสน มันทำให้คุณมีสถานที่ (ทั้งหมด) ที่สถานะของคุณเป็นจริง
ดังนั้น:
>>> 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
ฉันใช้เป็นอีกทางเลือกหนึ่งของ list.index () แต่ก็มีประโยชน์อื่น ๆ อีกมากมายเช่นกัน ฉันไม่เคยใช้กับอาร์เรย์ 2D
http://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html
คำตอบใหม่
ดูเหมือนว่าบุคคลนั้นกำลังถามบางสิ่งที่เป็นพื้นฐานมากกว่า
คำถามคือคุณจะใช้บางสิ่งที่ช่วยให้ฟังก์ชัน (เช่นที่ใด) ทราบสิ่งที่ร้องขอ
ก่อนอื่นโปรดทราบว่าการเรียกใช้ตัวดำเนินการเปรียบเทียบจะเป็นสิ่งที่น่าสนใจ
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)`
ซึ่งทำได้โดยการโอเวอร์โหลดเมธอด "__gt__" ตัวอย่างเช่น:
>>> class demo(object):
def __gt__(self, item):
print item
>>> a = demo()
>>> a > 4
4
อย่างที่คุณเห็น "a> 4" เป็นรหัสที่ถูกต้อง
คุณสามารถรับรายการและเอกสารของฟังก์ชันที่โอเวอร์โหลดทั้งหมดได้ที่นี่: http://docs.python.org/reference/datamodel.html
สิ่งที่เหลือเชื่อคือการทำสิ่งนี้ง่ายเพียงใด การดำเนินการทั้งหมดใน python ทำได้ในลักษณะดังกล่าว การพูดว่า a> b เทียบเท่ากับ a. gt (ข)!
numpy.where
จะมี 2 รูปแบบการดำเนินงาน 'แรกผลตอบแทนindices
ที่condition is True
และถ้าพารามิเตอร์ที่ไม่จำเป็นx
และy
เป็นปัจจุบัน (รูปร่างเช่นเดียวกับcondition
หรือ broadcastable รูปร่างดังกล่าว!) ก็จะกลับค่าจากx
เมื่อเป็นอย่างอื่นจากcondition is True
y
ดังนั้นสิ่งนี้ทำให้where
มีความหลากหลายมากขึ้นและทำให้สามารถใช้งานได้บ่อย ขอบคุณ