Θεωρία Πληροφορίας - Κώδικες. Γιαννακόπουλος Θεόδωρος

Σχετικά έγγραφα
Θεωρία Πληροφορίας - Κώδικες. Γιαννακόπουλος Θεόδωρος

ΘΕΜΑΤΑ ΚΑΙ ΛΥΣΕΙΣ. 1) Έστω η λογική συνάρτηση F = A' + Β'. D + B. C' + C. D' (όπου οι τόνοι δηλώνουν συμπληρώματα).

Σημειωματάριο Δευτέρας, 6 Νοε. 2017

Προγραμματιστικά Εργαλεία και Τεχνολογίες για Επιστήμη Δεδομένων

Τυπικές χρήσεις της Matlab

Διάλεξη 1. Πράξεις Τελεστές Έλεγχος Ροής

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Θέματα Προγραμματισμού Η/Υ

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Μαρία Λουκά. Εργαστήριο Matlab. Αριθμητικός υπολογισμός ιδιοτιμών και ιδιοδιανυσμάτων. Τμήμα Πληροφορικής και Τηλεπικοινωνιών.

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

Ενότητα: Δυαδική Αναζήτηση Σχέδιο Δραστηριότητας: Παιχνίδι: Βρες τον αριθμό

Θεωρία Πληροφορίας - Κώδικες. Γιαννακόπουλος Θεόδωρος

Γραφικά υπολογιστών Εργαστήριο 2 Παιχνίδια μαντεύματος με τυχαίους αριθμούς και loops

1 Πίνακες 1.1 Συνοπτική θεωρία

Σημειωματάαριο Δευτέρας 16 Οκτ. 2017

MEM 253. Αριθμητική Λύση ΜΔΕ * * *

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

Σημειωματάριο Τετάρτης 4 Οκτ. 2017

Σημειωματάριο Τετάρτης 18 Οκτ. 2017

Πανεπιστήμιο Πελοποννήσου. Σχολή Θετικών Επιστημών & Τεχνολογίας. Τμήμα Επιστήμης & Τεχνολογίας Υπολογιστών. Προγραμματισμός Ι Εργαστήριο

MEM 253. Αριθμητική Λύση ΜΔΕ * * *

Advances in Digital Imaging and Computer Vision

Προγραμματιστικά Εργαλεία και Τεχνολογίες για Επιστήμη Δεδομένων

Εισαγωγή στην Γλώσσα Προγραμματισμού Python. 12/10/16 1

Βασικά στοιχεία γλώσσας προγραμματισμού. Σπάχος Κυριάκος Καθηγητής Πληροφορικής ΠΕ19

Διάλεξη 6: Δείκτες και Πίνακες

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Τύποι Δεδομένων και Τελεστές

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

Εισαγωγή στους Υπολογιστές

Εισαγωγή στη Matlab Εισαγωγή στην Αριθμητική Ανάλυση Διδάσκων: Γεώργιος Ακρίβης Βοηθός: Δημήτριος Ζαβαντής

Εργαστήρια Αριθμητικής Ανάλυσης Ι. 7 ο Εργαστήριο. Διανύσματα-Πίνακες 2 ο Μέρος

Γραφικά υπολογιστών Εργαστήριο 4 Εισαγωγή στις λίστες

Προγραμματισμός με Python στο Raspberry Pi. LED και PWMLED. για το Code Club Απρίλιος Σύλλογος Εκπαιδευτικών Πληροφορικής Χίου

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

διανύσματα - Πίνακες - Struct Στατικό διάνυσμα Είσοδος Έξοδος δεδομένων Συναρτήσεις Χειρισμός σφαλμάτων ΤΕΤΑΡΤΗ ΔΙΑΛΕΞΗ

Επεξερασία εικόνας. Μιχάλης ρακόπουλος. Υπολογιστική Επιστήµη & Τεχνολογία, #09

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

Προγραμματισμός Υπολογιστών Τάξη Γ Αθανασιάδης Χρήστος ΠΕ19 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

Εισαγωγή στον Προγ/μό Υπολογιστών

ΠΛΗ 22: Βασικά Ζητήματα Δίκτυα Η/Υ

Εισαγωγή στο SAGE. Νίκος Νοδαράκης. 31 Οκτωβρίου 2010

Σημειώσεις. Ο αριθμός των στοιχείων μίας λίστας μπορεί να βρεθεί με χρήση της συνάρτησης len:

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Πληροφορική ΙΙ Θεματική Ενότητα 10

ΠΛΗΡΟΦΟΡΙΚΗ Ι (MATLAB) Ενότητα 5

Σχήµα 6.1: Εισαγωγή της εντολής Read From Spreadsheet File στο Block Diagram.

Τύποι δεδομένων, τελεστές, μεταβλητές

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #2

Εισαγωγή στους Υπολογιστές

Φύλλο Εργασίας 3. Μια γρήγορη επανάληψη από τα προηγούμενα

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων

Πίνακες >>A = [ 1,6; 7, 11]; Ή τον πίνακα >> B = [2,0,1; 1,7,4; 3,0,1]; Πράξεις πινάκων

Εργαστήρια Αριθμητικής Ανάλυσης Ι. 4 ο Εργαστήριο. Διανύσματα-Πίνακες 1 ο Μέρος

Visual Basic Βασικές Έννοιες

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Εισαγωγή στους Η/Υ και τις Εφαρμογές Ενότητα 5: Επεξεργασία δεδομένων με τη γλώσσα προγραμματισμού python Υπο-ενότητα 5.2: Συμβολοσειρές-Έλεγχος Ροής

Αποτελέσματα προόδου

Προαπαιτούμενες Ασκήσεις 5 ου Εργαστηρίου. Dose stoixeio (integer) : 25 Found stoixeio in position 7 Dose stoixeio (integer) :94 Value not found

Εισαγωγή στον επιστημονικό προγραμματισμό 2 o Μάθημα

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Ανάλυση Δεδομένων και Έλεγχος Υποθέσεων με τεχνολογία Python/pandas

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον (Εργαστήριο 7)

Ανάκτηση Πληροφορίας

Στοιχειώδης προγραμματισμός σε C++

ΜΑΣ 473/673: Μέθοδοι Πεπερασμένων Στοιχείων

Ενότητα 14 Γραφικές Παραστάσεις

Εισαγωγή στη Fortran. Μάθημα 1 ο. Ελευθερία Λιούκα

4 η ΕΝΟΤΗΤΑ Μητρώα και συνθήκες στο MATLAB

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον (Εργαστήριο 7)

Κεφάλαιο 4: Μεταβλητές και εκφράσεις

Matlab. Εισαγωγικές έννοιες. C. C. Katsidis

Διάλεξη 16: Πρόβλημα Συμφωνίας. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Μονοδιάστατοι πίνακες

Συστήματα Αναμονής (Queuing Systems)

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

Βασικές Ασκήσεις από τα Εργαστήρια της Python. Πέμπτη Εργ. 3 17:15 και 19:15

( ) = ( ) Μάθημα 2 ο ΒΑΘΜΟΣ ΠΙΝΑΚΑ. Θεωρία : Γραμμική Άλγεβρα : εδάφιο 4, σελ. 63, Πρόταση 4.9, σελ. 90. Βασικές ιδιότητες

Εργαστήριο Σημασιολογικού Ιστού

DESIGN OF MACHINERY SOLUTION MANUAL h in h 4 0.

ΠΛΗ 22: Βασικά Ζητήματα Δίκτυα Η/Υ

Εισαγωγή στην Αριθμητική Ανάλυση

Εισαγωγή στους πίνακες

DISTINCT, LIKE, NULL, AND, OR, BETWEEN

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Σχήµα 4.1: Εισαγωγή βρόγχου while-loop.

Αλγεβρικές Παραστάσεις

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PYTHON (ΟΜΑΔΑ Α)

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

ΜΑΘΗΜΑΤΙΚΑ Γ ΓΥΜΝΑΣΙΟΥ

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές

Εργαστήριο Σημασιολογικού Ιστού

1. A fully continuous 20-payment years, 30-year term life insurance of 2000 is issued to (35). You are given n A 1

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Transcript:

Θεωρία Πληροφορίας - Κώδικες Γιαννακόπουλος Θεόδωρος 1

Θεωρία Πληροφορίας - Κώδικες Εργαστήριο 2 Numpy, matplotlib και παραδείγματα 2

Numpy (1) - Γενικά - numpy: numerical python - η βασική βιβλιοθήκη για επιστημονικό υπολογισμό - γρήγορη και εύκολη διαχείριση πολυδιάστατων πινάκων - γραμμική άλγεβρα - ομοιότητα με matlab στην σύνταξη a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) print a.shape # prints (3,) print a+b # prints [5 7 9] a[0] = 0 print a # prints [0 2 3] 3

Numpy (2) - Ορισμοί και Βασικές Πράξεις a = np.zeros((2,2)) print a.shape # prints (2, 2) print a # prints [[ 0. 0.] [ 0. 0.]] print a + 2 # prints [[ 2. 2.] [ 2. 2.]] b = np.random.random((3,2)) # create a 3x2 random matrix a = np.array([[1,2,3],[4,5,6]]) b = np.array([[1,1,1],[2,2,2]]) print a + b # prints [[2 3 4] [6 7 8]] print a * b # prints [[ 1 2 3] [ 8 10 12]] np.dot(a,b) # ValueError: objects are not aligned print np.sum(a) # prints 21 print np.sum(a, axis = 0) # prints [5 7 9] print np.sum(a, axis = 1) # prints [6 15] print (a.t).shape # prints (3,2) prints (a.t) # pritns [[1 4] [2 5] [3 6]] 4

Numpy (3) - Indexing (1) a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]]) b = a[:2, 1:3] slices (2 πρωτες γραμμές + 2η,3η στήλη) print a[0, 1] # Prints "2" b[0, 0] = 77 # b[0, 0] is the same piece of data as a[0, 1] print a[0, 1] # Prints "77"!!! αλλάζοντας το b αλλάζει και το a 5

Numpy (3) - Indexing (2) a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]]) row_r1 = a[1, :] # Rank 1 view of the second row of a row_r2 = a[1:2, :] # Rank 2 view of the second row of a print row_r1, row_r1.shape # Prints "[5 6 7 8] (4,)" print row_r2, row_r2.shape # Prints "[[5 6 7 8]] (1, 4)" Υπάρχουν 2 τρόποι προσπέλασης γραμμών ή στηλών - ακέραιος + slice 1-d διάνυσμα - slice + slice 2-d πίνακας col_r1 = a[:, 1] col_r2 = a[:, 1:2] print col_r1, col_r1.shape # Prints "[ 2 6 10] (3,)" print col_r2, col_r2.shape # Prints "[[ 2] # [ 6] # [10]] (3, 1)" 6

Numpy (3) - Indexing (3) a = np.array([[1,2], [3, 4], [5, 6]]) print a[[0, 1, 2], [0, 1, 0]] # Prints "[1 4 5]" # equivalent: print np.array([a[0, 0], a[1, 1], a[2, 0]]) # Prints "[1 4 5]" - το slicing οδηγεί σε υποπίνακες - αν χρησιμοποιηθούν ακέραιοι στο indexing μπορούν να προκύψουν πιο αυθαίρετοι (arbitary) πίνακες print a[[0, 0], [1, 1]] # Prints "[2 2]" # equivalent: print np.array([a[0, 1], a[0, 1]]) # Prints "[2 2]" Στο indexing μέσω ακεραίων μπορούν κάποια στοιχεία του πίνακα να επαναχρησιμοποιηθούν (εδώ το (0,1)) 7

Numpy (4) - Indexing (4) - indexing μέσω boolean: για έλεγχο συνθηκών a = np.array([[1,2], [3, 4], [5, 6]]) bool_idx = (a > 2) print bool_idx # Prints "[[False False] # [ True True] # [ True True]]" print a[bool_idx] # Prints "[3 4 5 6]" # equivalent print a[a > 2] # Prints "[3 4 5 6]" Επιστρέφει ένα numpy array με booleans που έχει: - ίδιο μέγεθος με το αρχικό - True/False αν το αντίστοιχο στοιχείο ικανοποιεί (δεν) την συνθήκη >2 ένα array που αποτελείται από τα στοιχεία του a για τα οποία το bool_idx ειναι true όλα τα παραπάνω μπορούν να γίνουν και σε ένα βήμα 8

Numpy (4) - Broadcasting (1) broadcasting: μηχανισμός που επιτρέπει να χειριζόμαστε πίνακες διαφορετικών μεγεθών για να πραγματοποιούμε αριθμητικές πράξεις x = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]]) v = np.array([1, 0, 1]) y = np.empty_like(x) for i in range(4): y[i, :] = x[i, :] + v print y x = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]]) v = np.array([1, 0, 1]) vv = np.tile(v, (4, 1)) print vv y = x + vv print y loop: αργό και μή αποδοτικό κενός πίνακας ίδιου μεγέθους με τον x πρόσθεσε το v σε κάθε γραμμή του x (loop) [[ 2 2 4] [ 5 5 7] [ 8 8 10] [11 11 13]] στοιβάζουμε 4 αντίγραφα του v. αποτέλεσμα: [[1 0 1] [1 0 1][1 0 1][1 0 1]] [[ 2 2 4] [ 5 5 7] [ 8 8 10] [11 11 13]] 9

Numpy (4) - Broadcasting (2) broadcasting: μηχανισμός που επιτρέπει να χειριζόμαστε πίνακες διαφορετικών μεγεθών για να πραγματοποιούμε αριθμητικές πράξεις x = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]]) v = np.array([1, 0, 1]) y = x + v print y πρόσθεσε το v σε κάθε γραμμή του x (broadcasting) broadcasting: το y = x + v καταλήγει σε επιτυχία παρόλο που το x έχει μέγεθος (3,2) και το v (3,). (άθροισμα κατά γραμμή) 10

matplotlib (1) - Γενικά - βιβλιοθήκη για παραγωγή γραφικών παραστάσεων σε python - το interface pyplot έχει Matlab-like λειτουργητότητα 11

matplotlib (2) - παράδειγμα plot 1 - plot(y): ενώνει με γραμμικό τρόπο τα σημεία (0,Y(0)), (1, Y(1)) κτλ - plot(x, Y): ενώνει με γραμμικό τρόπο τα σημεία (X(i),Y(i)) import matplotlib.pyplot as plt plt.plot([1, 2, 3, 2, 1]) plt.ylabel('y') plt.show() import matplotlib.pyplot as plt plt.plot([0.1,0.2,0.3,0.4,0.5],[1,2,3,2,1]) plt.ylabel('y') plt.show() 12

matplotlib (2) - παράδειγμα plot 2 import matplotlib.pyplot as plt x = np.arange(-2,2,0.1) y = x ** 2-1 plt.plot(x, y) plt.ylabel('x^2') plt.xlabel('x') plt.show() import matplotlib.pyplot as plt x = np.arange(-2,2,0.1) y = x ** 2-1 plt.plot(x, y, '*') plt.ylabel('x^2') plt.xlabel('x') plt.show() 13

matplotlib (2) - παράδειγμα plot 3 import matplotlib.pyplot as plt Fs = 8000 t = np.arange(0, 0.01, 1.0/Fs) y1 = np.cos(2*np.pi*200*t) y2 = np.cos(2*np.pi*300*t) plt.plot(t, y1, 'r') plt.plot(t, y2, 'g') plt.legend(['cos(2*pi*200*t)','cos(2*pi*300*t)']) plt.xlabel('t (sec)') plt.show() # sampling rate # time values # y1 = 2*pi*200*t # y2 = 2*pi*300*t # plot y1 # plot y2 # show legends 14

matplotlib (3) - παράδειγμα εντροπίας import matplotlib.pyplot as plt p1 = np.arange(0.005,1,0.005) # p1 defined in the [0:0.05:1] range p2 = 1 - p1 # p2 = 1 - p1 H = np.zeros(p1.shape) # entropy initialization for i in range(p1.shape[0]): # for each p value Probs = np.array([p1[i], p2[i]]) # define probabiitlies matrix H[i] = -np.sum(probs * np.log2(probs+0.00000000001))# compute entropy plt.plot(p1, H) plt.xlabel("p1") plt.ylabel("entropy") plt.show() 15