การลบแถวในอาร์เรย์ numpy
ฉันมีอาร์เรย์ที่อาจมีลักษณะดังนี้: ANOVAInputMatrixValuesArray = [[ 0.96488889, 0.73641667, 0.67521429, 0.592875, 0.53172222], [ 0.78008333, 0.5938125, 0.481, 0.39883333, 0.]] สังเกตว่าแถวใดแถวหนึ่งมีค่าเป็นศูนย์ในตอนท้าย ฉันต้องการลบแถวใด ๆ ที่มีศูนย์ในขณะที่รักษาแถวที่มีค่าที่ไม่ใช่ศูนย์ในเซลล์ทั้งหมด แต่อาร์เรย์จะมีจำนวนแถวต่างกันทุกครั้งที่มีการเติมข้อมูลและเลขศูนย์จะอยู่คนละแถวในแต่ละครั้ง ฉันได้รับจำนวนองค์ประกอบที่ไม่ใช่ศูนย์ในแต่ละแถวด้วยโค้ดบรรทัดต่อไปนี้: NumNonzeroElementsInRows = (ANOVAInputMatrixValuesArray != 0).sum(1) สำหรับอาร์เรย์ด้านบนNumNonzeroElementsInRowsประกอบด้วย: [5 4] ค่าที่ 5 ระบุว่าค่าที่เป็นไปได้ทั้งหมดในแถว 0 ไม่เป็นศูนย์ในขณะที่ค่าสี่ระบุว่าค่าที่เป็นไปได้ค่าหนึ่งในแถว 1 เป็นศูนย์ ดังนั้นฉันจึงพยายามใช้โค้ดบรรทัดต่อไปนี้เพื่อค้นหาและลบแถวที่มีค่าเป็นศูนย์ for q in range(len(NumNonzeroElementsInRows)): if NumNonzeroElementsInRows[q] < NumNonzeroElementsInRows.max(): p.delete(ANOVAInputMatrixValuesArray, q, axis=0) แต่ด้วยเหตุผลบางประการรหัสนี้ดูเหมือนจะไม่ทำอะไรแม้ว่าการพิมพ์คำสั่งจำนวนมากจะบ่งชี้ว่าตัวแปรทั้งหมดดูเหมือนจะเติมข้อมูลอย่างถูกต้องซึ่งนำไปสู่รหัส ต้องมีวิธีง่ายๆในการ …