ฉันมีอาร์เรย์ที่อาจมีลักษณะดังนี้:
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)
แต่ด้วยเหตุผลบางประการรหัสนี้ดูเหมือนจะไม่ทำอะไรแม้ว่าการพิมพ์คำสั่งจำนวนมากจะบ่งชี้ว่าตัวแปรทั้งหมดดูเหมือนจะเติมข้อมูลอย่างถูกต้องซึ่งนำไปสู่รหัส
ต้องมีวิธีง่ายๆในการ "ลบแถวใดก็ได้ที่มีค่าเป็นศูนย์"
ใครช่วยแสดงรหัสที่จะเขียนเพื่อบรรลุเป้าหมายนี้ได้ไหม
numpy.delete(x, index)
ไม่ได้