אני לא מצליחה לגשת לאיברים במטריצה ו/או לעשות לה סלייס. מישהו יכול להעלות על דעתו למה?
mat=Matrix(6,6,4)
mat
<Matrix [[4, 4, 4, 4, 4, 4], [4, 4, 4, 4, 4, 4], [4, 4, 4, 4, 4, 4], [4, 4, 4, 4, 4, 4], [4, 4, 4, 4, 4, 4], [4, 4, 4, 4, 4, 4]]>
mat[0][0]
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
mat[0][0]
File "C:/Users/Natali/Downloads/matrix.py", line 31, in getitem
i,j = ij
TypeError: 'int' object is not iterable
קודם כל תודה,
ועוד שאלה, אם אני רוצה לחתוך עמודה או שורה, איך הכתיב צריך להיות?
check the getitem in the class Matrix setup.
check the earlier post by yotam- named "heads up-matrix slices"
הבעיה בכתיב הראשון שלך היה שניגשת בשתי כיוונים שונים - כשכותבים
matrix[0][0]
העצם Matrix עצמו הוא לא רשימה של רשימות, אל סוג חדש של אובייקט.
אם את כן רוצה מסיבה כלשהיא להסתכל על הייצוג הפנימי שלו, תצטרכי לקרוא ל
Matrix.rows[blabla][bla]
כן הבנתי שהייתה לי טעות בגישה לאיבר
השאלה איך אני ניגשת לשורה/עמודה?
ניסיתי לעשות
mat[0:, 0:1]
למשל כדי לקבל את העמודה הראשונה
וזה זרק לי שגיאה:
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
m.rows[:,0]
TypeError: list indices must be integers, not tuple
אז השאלה, איך אני ניגשת לעמודה/שורה?
אפשר בלולאה או ב
list comprehension
a=[mat[i,0] for i in range(0,len(mat.rows))]
וזה בעצם יוצר לך רשימה של העמודה הראשונה
אני אשאיר לך לחשוב איך להוציא את העמודה האחרונה זה זהה כמעט לגמריי
(שינוי של תו אחד בדיוק)