คำตอบ:
หลังจากเล่นไปสักพักหนึ่งฉันก็หาสิ่งต่าง ๆ ออกมาและโพสต์ข้อความไว้ที่นี่โดยหวังว่ามันจะช่วยผู้อื่น
สังหรณ์ใจnp.where
เป็นเหมือนการถามว่า " บอกฉันทีว่าในแถวนี้รายการอะไรที่ตรงตามเงื่อนไขที่กำหนด "
>>> a = np.arange(5,10)
>>> np.where(a < 8) # tell me where in a, entries are < 8
(array([0, 1, 2]),) # answer: entries indexed by 0, 1, 2
นอกจากนี้ยังสามารถใช้เพื่อรับรายการในอาร์เรย์ที่ตรงตามเงื่อนไข:
>>> a[np.where(a < 8)]
array([5, 6, 7]) # selects from a entries 0, 1, 2
เมื่อa
ใดที่เป็นอาร์เรย์ 2 มิติnp.where()
จะส่งคืนอาร์เรย์ของแถว idx และอาร์เรย์ของคอลัมน์ idx:
>>> a = np.arange(4,10).reshape(2,3)
array([[4, 5, 6],
[7, 8, 9]])
>>> np.where(a > 8)
(array(1), array(2))
เช่นเดียวกับในกรณี 1d เราสามารถใช้np.where()
รับรายการในอาร์เรย์ 2d ที่ตรงตามเงื่อนไข:
>>> a[np.where(a > 8)] # selects from a entries 0, 1, 2
อาร์เรย์ ([9])
หมายเหตุเมื่อa
เป็น 1d np.where()
ยังคงส่งกลับอาร์เรย์ของแถว idx และอาร์เรย์ของคอลัมน์ idx แต่คอลัมน์มีความยาว 1 ดังนั้นหลังจึงเป็นอาร์เรย์ว่าง
np.where(2d_array)
ขอบคุณสำหรับการเคลียร์สิ่งนี้! คุณควรยอมรับคำตอบของคุณเอง e: โอ้มันปิดแล้ว มันไม่ควรจะเป็น
np.where
ให้กับคำตอบที่สมบูรณ์แบบนี้ ฟังก์ชั่นยังสามารถเลือกองค์ประกอบจากอาร์เรย์ x และ y ขึ้นอยู่กับเงื่อนไข พื้นที่ จำกัด ในความคิดเห็นนี้ แต่เห็น: จะกลับมาnp.where(np.array([[False,False,True], [True,False,False]]), np.array([[8,2,6], [9,5,0]]), np.array([[4,8,7], [3,2,1]]))
array([[4, 8, 6], [9, 2, 1]])
สังเกตุว่าองค์ประกอบใดของ x และ y ที่ถูกเลือกขึ้นอยู่กับจริง / เท็จ
condition
np.asarray(condition).nonzero()
นี่คือความสนุกอีกเล็กน้อย ฉันพบว่าบ่อยครั้งที่ NumPy ทำสิ่งที่ฉันต้องการอย่างแน่นอน - บางครั้งมันเร็วกว่าที่ฉันจะลองทำมากกว่าที่จะอ่านเอกสาร จริงๆแล้วส่วนผสมของทั้งสองอย่างดีที่สุด
ฉันคิดว่าคำตอบของคุณใช้ได้ (และก็ยินดีที่จะยอมรับถ้าคุณต้องการ) นี่เป็นเพียง "พิเศษ"
import numpy as np
a = np.arange(4,10).reshape(2,3)
wh = np.where(a>7)
gt = a>7
x = np.where(gt)
print "wh: ", wh
print "gt: ", gt
print "x: ", x
ให้:
wh: (array([1, 1]), array([1, 2]))
gt: [[False False False]
[False True True]]
x: (array([1, 1]), array([1, 2]))
... แต่:
print "a[wh]: ", a[wh]
print "a[gt] ", a[gt]
print "a[x]: ", a[x]
ให้:
a[wh]: [8 9]
a[gt] [8 9]
a[x]: [8 9]