Python Matrix και εισαγωγή στο NumPy

Σε αυτό το άρθρο, θα μάθουμε για πίνακες Python χρησιμοποιώντας ένθετες λίστες και πακέτο NumPy.

Η μήτρα είναι μια δισδιάστατη δομή δεδομένων όπου οι αριθμοί είναι διατεταγμένοι σε σειρές και στήλες. Για παράδειγμα:

Αυτός ο πίνακας είναι ένας πίνακας 3x4 (προφέρεται "τρία με τέσσερα") επειδή έχει 3 σειρές και 4 στήλες.

Python Matrix

Η Python δεν διαθέτει ενσωματωμένο τύπο για πίνακες. Ωστόσο, μπορούμε να αντιμετωπίσουμε τη λίστα μιας λίστας ως μήτρα. Για παράδειγμα:

 A = ((1, 4, 5), (-5, 8, 9)) 

Μπορούμε να αντιμετωπίσουμε αυτήν τη λίστα μιας λίστας ως πίνακας με 2 σειρές και 3 στήλες.

Μην ξεχάσετε να μάθετε για τις λίστες Python προτού προχωρήσετε σε αυτό το άρθρο.

Ας δούμε πώς να δουλεύουμε με μια ένθετη λίστα.

 A = ((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19)) print("A =", A) print("A(1) =", A(1)) # 2nd row print("A(1)(2) =", A(1)(2)) # 3rd element of 2nd row print("A(0)(-1) =", A(0)(-1)) # Last element of 1st Row column = (); # empty list for row in A: column.append(row(2)) print("3rd column =", column) 

Όταν εκτελούμε το πρόγραμμα, η έξοδος θα είναι:

 A = ((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19)) A (1) = (-5, 8, 9, 0) A (1) (2) = 9 A (0) (- 1) = 12 3η στήλη = (5, 9, 11) 

Ακολουθούν μερικά ακόμη παραδείγματα που σχετίζονται με πίνακες Python χρησιμοποιώντας ένθετες λίστες.

  • Προσθέστε δύο πίνακες
  • Μεταφέρετε ένα Matrix
  • Πολλαπλασιάστε δύο πίνακες

Η χρήση ένθετων λιστών ως πίνακας λειτουργεί για απλές υπολογιστικές εργασίες, ωστόσο, υπάρχει ένας καλύτερος τρόπος εργασίας με πίνακες στο Python χρησιμοποιώντας το πακέτο NumPy.

NumPy Array

Το NumPy είναι ένα πακέτο επιστημονικών υπολογιστών που έχει υποστήριξη για ένα ισχυρό αντικείμενο Ν-διαστάσεων πίνακα. Για να μπορέσετε να χρησιμοποιήσετε το NumPy, πρέπει να το εγκαταστήσετε. Για περισσότερες πληροφορίες,

  • Επίσκεψη: Πώς να εγκαταστήσετε το NumPy;
  • Εάν χρησιμοποιείτε Windows, πραγματοποιήστε λήψη και εγκατάσταση της διανομής anaconda του Python. Έρχεται με το NumPy και άλλα διάφορα πακέτα που σχετίζονται με την επιστήμη δεδομένων και τη μηχανική μάθηση.

Μόλις εγκατασταθεί το NumPy, μπορείτε να το εισαγάγετε και να το χρησιμοποιήσετε.

Το NumPy παρέχει έναν πολυδιάστατο πίνακα αριθμών (που είναι στην πραγματικότητα ένα αντικείμενο). Ας πάρουμε ένα παράδειγμα:

 import numpy as np a = np.array((1, 2, 3)) print(a) # Output: (1, 2, 3) print(type(a)) # Output: 

Όπως μπορείτε να δείτε, ονομάζεται κλάση πίνακα NumPy ndarray.

Πώς να δημιουργήσετε έναν πίνακα NumPy;

Υπάρχουν διάφοροι τρόποι δημιουργίας συστοιχιών NumPy.

1. Σειρά ακέραιων αριθμών, πλωτών και σύνθετων αριθμών

 import numpy as np A = np.array(((1, 2, 3), (3, 4, 5))) print(A) A = np.array(((1.1, 2, 3), (3, 4, 5))) # Array of floats print(A) A = np.array(((1, 2, 3), (3, 4, 5)), dtype = complex) # Array of complex numbers print(A) 

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:

 ((1 2 3) (3 4 5)) ((1.1 2. 3.) (3. 4. 5.)) ((1. + 0.j 2. + 0.j 3. + 0.j) (3. + 0.j 4. + 0.j 5. + 0.j)) 

2. Σειρά μηδενικών και αυτών

 import numpy as np zeors_array = np.zeros( (2, 3) ) print(zeors_array) ''' Output: ((0. 0. 0.) (0. 0. 0.)) ''' ones_array = np.ones( (1, 5), dtype=np.int32 ) // specifying dtype print(ones_array) # Output: ((1 1 1 1 1)) 

Εδώ, έχουμε καθορίσει dtypeσε 32 bit (4 bytes). Ως εκ τούτου, αυτός ο πίνακας μπορεί να πάρει τιμές από έως .-2-312-31-1

3. Χρήση arange () και σχήματος ()

 import numpy as np A = np.arange(4) print('A =', A) B = np.arange(12).reshape(2, 6) print('B =', B) ''' Output: A = (0 1 2 3) B = (( 0 1 2 3 4 5) ( 6 7 8 9 10 11)) ''' 

Μάθετε περισσότερα σχετικά με άλλους τρόπους δημιουργίας ενός πίνακα NumPy.

Λειτουργίες Matrix

Πάνω, σας δώσαμε 3 παραδείγματα: προσθήκη δύο πινάκων, πολλαπλασιασμός δύο πινάκων και μεταφορά μιας μήτρας. Χρησιμοποιήσαμε προηγουμένως ένθετες λίστες για να γράψουμε αυτά τα προγράμματα. Ας δούμε πώς μπορούμε να κάνουμε την ίδια εργασία χρησιμοποιώντας τον πίνακα NumPy.

Προσθήκη δύο πινάκων

Χρησιμοποιούμε τον +τελεστή για να προσθέσουμε αντίστοιχα στοιχεία δύο πινάκων NumPy.

 import numpy as np A = np.array(((2, 4), (5, -6))) B = np.array(((9, -3), (3, 6))) C = A + B # element wise addition print(C) ''' Output: ((11 1) ( 8 0)) '''

Πολλαπλασιασμός δύο πινάκων

Για τον πολλαπλασιασμό δύο πινάκων, χρησιμοποιούμε τη dot()μέθοδο. Μάθετε περισσότερα σχετικά με τον τρόπο λειτουργίας του numpy.dot.

Σημείωση: * χρησιμοποιείται για πολλαπλασιασμό συστοιχιών (πολλαπλασιασμός αντίστοιχων στοιχείων δύο συστοιχιών) και όχι πολλαπλασιασμός μήτρας

 import numpy as np A = np.array(((3, 6, 7), (5, -3, 0))) B = np.array(((1, 1), (2, 1), (3, -3))) C = A.dot(B) print(C) ''' Output: (( 36 -12) ( -1 2)) ''' 

Μεταφορά ενός πίνακα

Χρησιμοποιούμε το numpy.transpose για τον υπολογισμό της μεταφοράς ενός πίνακα.

 import numpy as np A = np.array(((1, 1), (2, 1), (3, -3))) print(A.transpose()) ''' Output: (( 1 2 3) ( 1 1 -3)) ''' 

Όπως μπορείτε να δείτε, το NumPy έκανε το έργο μας πολύ πιο εύκολο.

Πρόσβαση σε στοιχεία μήτρας, σειρές και στήλες

Πρόσβαση σε στοιχεία μήτρας

Παρόμοια όπως λίστες, μπορούμε να έχουμε πρόσβαση σε στοιχεία μήτρας χρησιμοποιώντας ευρετήριο. Ας ξεκινήσουμε με έναν μονοδιάστατο πίνακα NumPy.

 import numpy as np A = np.array((2, 4, 6, 8, 10)) print("A(0) =", A(0)) # First element print("A(2) =", A(2)) # Third element print("A(-1) =", A(-1)) # Last element 

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:

 A (0) = 2 A (2) = 6 A (-1) = 10 

Τώρα, ας δούμε πώς μπορούμε να έχουμε πρόσβαση σε στοιχεία ενός δισδιάστατου πίνακα (που είναι βασικά ένας πίνακας).

 import numpy as np A = np.array(((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19))) # First element of first row print("A(0)(0) =", A(0)(0)) # Third element of second row print("A(1)(2) =", A(1)(2)) # Last element of last row print("A(-1)(-1) =", A(-1)(-1)) 

Όταν εκτελούμε το πρόγραμμα, η έξοδος θα είναι:

 A (0) (0) = 1 A (1) (2) = 9 A (-1) (- 1) = 19 

Πρόσβαση σε σειρές ενός Matrix

 import numpy as np A = np.array(((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19))) print("A(0) =", A(0)) # First Row print("A(2) =", A(2)) # Third Row print("A(-1) =", A(-1)) # Last Row (3rd row in this case)

Όταν εκτελούμε το πρόγραμμα, η έξοδος θα είναι:

 A (0) = (1, 4, 5, 12) A (2) = (-6, 7, 11, 19) A (-1) = (-6, 7, 11, 19) 

Πρόσβαση σε στήλες ενός Matrix

 import numpy as np A = np.array(((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19))) print("A(:,0) =",A(:,0)) # First Column print("A(:,3) =", A(:,3)) # Fourth Column print("A(:,-1) =", A(:,-1)) # Last Column (4th column in this case) 

Όταν εκτελούμε το πρόγραμμα, η έξοδος θα είναι:

 A (:, 0) = (1 -5 -6) A (:, 3) = (12 0 19) A (:, - 1) = (12 0 19) 

Αν δεν γνωρίζετε πώς λειτουργεί αυτός ο παραπάνω κώδικας, διαβάστε το τμήμα μιας μήτρας αυτού του άρθρου.

Τεμαχισμός ενός πίνακα

Ο τεμαχισμός ενός μονοδιάστατου πίνακα NumPy είναι παρόμοιος με μια λίστα. Εάν δεν ξέρετε πώς λειτουργεί ο τεμαχισμός μιας λίστας, επισκεφτείτε την ενότητα Κατανόηση της σημείωσης slice της Python.

Ας πάρουμε ένα παράδειγμα:

 import numpy as np letters = np.array((1, 3, 5, 7, 9, 7, 5)) # 3rd to 5th elements print(letters(2:5)) # Output: (5, 7, 9) # 1st to 4th elements print(letters(:-5)) # Output: (1, 3) # 6th to last elements print(letters(5:)) # Output:(7, 5) # 1st to last elements print(letters(:)) # Output:(1, 3, 5, 7, 9, 7, 5) # reversing a list print(letters(::-1)) # Output:(5, 7, 9, 7, 5, 3, 1) 

Τώρα, ας δούμε πώς μπορούμε να κόψουμε μια μήτρα.

 import numpy as np A = np.array(((1, 4, 5, 12, 14), (-5, 8, 9, 0, 17), (-6, 7, 11, 19, 21))) print(A(:2, :4)) # two rows, four columns ''' Output: (( 1 4 5 12) (-5 8 9 0)) ''' print(A(:1,)) # first row, all columns ''' Output: (( 1 4 5 12 14)) ''' print(A(:,2)) # all rows, second column ''' Output: ( 5 9 11) ''' print(A(:, 2:5)) # all rows, third to the fifth column '''Output: (( 5 12 14) ( 9 0 17) (11 19 21)) ''' 

Όπως μπορείτε να δείτε, η χρήση του NumPy (αντί των ένθετων λιστών) καθιστά πολύ πιο εύκολο να εργαστείτε με πίνακες και δεν έχουμε ακόμη γρατσουνίσει τα βασικά. Σας προτείνουμε να εξερευνήσετε το πακέτο NumPy λεπτομερώς ειδικά εάν προσπαθείτε να χρησιμοποιήσετε το Python για την επιστήμη δεδομένων / αναλυτικά.

Πόροι NumPy που μπορεί να σας φανούν χρήσιμοι:

  • Εκμάθηση NumPy
  • Αναφορά NumPy

ενδιαφέροντα άρθρα...