Differences between revisions 1 and 11 (spanning 10 versions)
Revision 1 as of 2008-04-13 16:26:44
Size: 954
Editor: anonymous
Comment:
Revision 11 as of 2008-04-21 13:16:44
Size: 3745
Editor: anonymous
Comment:
Deletions are marked like this. Additions are marked like this.
Line 10: Line 10:
== For Schleifen ==

=== a) ===
Line 11: Line 15:
from scipy import *
from pylab import *
for ...:
     print i
  
0
1
2
3
}}}

 * Setzen Sie einen Ausdruck in {{{...}}} ein, um das Ergebnis zu erzeugen

[[SiaExercisesLesson2LoesungFora|Loesung]]

=== b) ===

{{{#!python
for ... in zip(range(0,4,1),range(4,0,-1)):
     print i,j
  
0 4
1 3
2 2
3 1
}}}

 * Setzen Sie einen Ausdruck in {{{...}}} ein, um das Ergebnis zu erzeugen

[[SiaExercisesLesson2LoesungForb|Loesung]]

=== c) ===
{{{
0 0
0 1
0 2
0 3
1 0
1 1
1 2
1 3
2 0
2 1
2 2
2 3
3 0
3 1
3 2
3 3
}}}
 * Wie sehen die dazugehörigen (verschachtelten) Schleifen aus, die dieses Ergebnis erzeugen?

[[SiaExercisesLesson2LoesungForc|Loesung]]

== Numpy/Scipy numerische Typen ==

{{{from numpy import *}}}

Ein Byte besteht aus 8-Bit und deckt den Wertebereich von 0..255 ({{{uint8}}}, unsigned integer)
oder -128..127 ab.

{{{#!python
b=int8(128)
-128 # Bereichsüberschreitung

b.nbytes
1
}}}

=== a) ===

Welchen Wertebereich decken die folgenden Integer-Typen ab und wieviele Bytes belegen diese im Speicher:

 * bool8
 * uint8, int8
 * uint16, int16
 * uint32, int32
 * uint64, uint64

[[SiaExercisesLesson2LoesungNumpyInt|Loesung]]

=== b) ===

Wieviele Bytes belegen die [[http://en.wikipedia.org/wiki/Floating_point|Float-Point]] Variablen im Speicher
 
 * float32, float64, float96
 * complex64, complex128, complex192

Welchen Wertebereich deckt eine typische ''Double Precision'' ({{{float64}}}) Variable ab?

[[SiaExercisesLesson2LoesungNumpyFloat|Loesung]]

== Datenstrukturen ==

=== a) ===
{{{#!python
D={'A':array(range(10)),'B':array(range(10))+1}
}}}
 * Welche Schlüssel enthält das Dictionary {{{D}}}
 * Geben Sie die Schlüssel mit der Methode {{{.keys()}}} aus
 * Geben Sie den Array {{{A}}} aus
 * Geben Sie die Elemente {{{3:6}}} des Arrays {{{B}}} aus
 * Setzen Sie diese Elemente auf 0
 * Fügen Sie ein neues Schlüssel-Wertepaar {{{C:array(range(0,10,-1))}}} zu {{{D}}} hinzu
 * Programmieren Sie eine Schleife, die alle Elemente von {{{D}}} ausgibt

[[SiaExercisesLesson2LoesungDatenstrukturenA|Loesung]]

=== b) ===
{{attachment:rgb.png}}

{{{#!python
from scipy import empty,mgrid,exp
from pylab import figure,clf,subplot,imshow,title,gray,plot,show,savefig
Line 21: Line 135:
Y,X=200,200 # Scalars
RGB=empty((Y,X,3),float) # Array
D,I={ 'R':(0,0,0), 'G':(200,100,1), 'B':(00,200,2) },{} # Dictionaries
Y,X=200,200
RGB=empty((Y,X,3),float)
D,I={ 'R':(0,0,0), 'G':(200,100,1), 'B':(00,200,2) },{}
Line 40: Line 154:

 * Stellen Sie eine Liste der Variablen auf, die das Programm enthält
 * Welchen Typs sind die Variablen? Was ist ihre Funktion?
 * Wieviele Arrays werden definiert?
 * Welche Arrays sind in anderen Datenstrukturen enthalten?
 * Welche Dimension haben die Arrays (-> Methode {{{.shape}}})
 

Legen Sie für jeden Farbkomponente einen horizontalen (y=100) und vertikalen Schnitt (x=100) durch das Array RGB.
Stellen Sie die Schnitte der drei einzelnen Komponenten in einer Abbildung dar.

[[SiaExercisesLesson2LoesungDatenstrukturenB|Loesung]]

SiaProgrammingPython

2. Stunde - Übungen

For Schleifen

a)

   1 for ...:
   2      print i
   3   
   4 0
   5 1 
   6 2
   7 3
  • Setzen Sie einen Ausdruck in ... ein, um das Ergebnis zu erzeugen

Loesung

b)

   1 for ... in zip(range(0,4,1),range(4,0,-1)):
   2      print i,j
   3   
   4 0 4
   5 1 3
   6 2 2
   7 3 1
  • Setzen Sie einen Ausdruck in ... ein, um das Ergebnis zu erzeugen

Loesung

c)

0 0
0 1
0 2
0 3
1 0
1 1
1 2
1 3
2 0
2 1
2 2
2 3
3 0
3 1
3 2
3 3
  • Wie sehen die dazugehörigen (verschachtelten) Schleifen aus, die dieses Ergebnis erzeugen?

Loesung

Numpy/Scipy numerische Typen

from numpy import *

Ein Byte besteht aus 8-Bit und deckt den Wertebereich von 0..255 (uint8, unsigned integer) oder -128..127 ab.

   1 b=int8(128)
   2 -128 # Bereichsüberschreitung
   3 
   4 b.nbytes
   5 1

a)

Welchen Wertebereich decken die folgenden Integer-Typen ab und wieviele Bytes belegen diese im Speicher:

  • bool8
  • uint8, int8
  • uint16, int16
  • uint32, int32
  • uint64, uint64

Loesung

b)

Wieviele Bytes belegen die Float-Point Variablen im Speicher

  • float32, float64, float96
  • complex64, complex128, complex192

Welchen Wertebereich deckt eine typische Double Precision (float64) Variable ab?

Loesung

Datenstrukturen

a)

   1 D={'A':array(range(10)),'B':array(range(10))+1}
  • Welche Schlüssel enthält das Dictionary D

  • Geben Sie die Schlüssel mit der Methode .keys() aus

  • Geben Sie den Array A aus

  • Geben Sie die Elemente 3:6 des Arrays B aus

  • Setzen Sie diese Elemente auf 0
  • Fügen Sie ein neues Schlüssel-Wertepaar C:array(range(0,10,-1)) zu D hinzu

  • Programmieren Sie eine Schleife, die alle Elemente von D ausgibt

Loesung

b)

rgb.png

   1 from scipy import empty,mgrid,exp
   2 from pylab import figure,clf,subplot,imshow,title,gray,plot,show,savefig
   3 
   4 def gaussian(center, width):
   5         """Returns a gaussian function"""
   6         center_y,center_x=float(center[0]),float(center[1])
   7         width_y,width_x=float(width[0]),float(width[1])
   8         return lambda y,x: exp(-(((center_y-y)/width_y)**2+((center_x-x)/width_x)**2)/2)
   9 
  10 
  11 Y,X=200,200 
  12 RGB=empty((Y,X,3),float) 
  13 D,I={ 'R':(0,0,0), 'G':(200,100,1), 'B':(00,200,2) },{} 
  14 y, x = mgrid[0:Y,0:X]
  15 figure(1)
  16 clf()
  17 for color in D.keys():
  18         I[color] = gaussian(D[color][0:2], (100,100))(y, x)
  19         RGB[:,:,D[color][2]]=I[color]
  20         subplot(2,2,D[color][2]+1)
  21         imshow(I[color],origin='lower')
  22         title(color)
  23         gray()
  24 subplot(2,2,4)
  25 imshow(RGB,origin='lower')
  26 title('RGB')
  27 show()
  28 savefig('rgb.png',dpi=100)
  • Stellen Sie eine Liste der Variablen auf, die das Programm enthält
  • Welchen Typs sind die Variablen? Was ist ihre Funktion?
  • Wieviele Arrays werden definiert?
  • Welche Arrays sind in anderen Datenstrukturen enthalten?
  • Welche Dimension haben die Arrays (-> Methode .shape)

Legen Sie für jeden Farbkomponente einen horizontalen (y=100) und vertikalen Schnitt (x=100) durch das Array RGB. Stellen Sie die Schnitte der drei einzelnen Komponenten in einer Abbildung dar.

Loesung

LehreWiki: SiaExercisesLesson2 (last edited 2008-04-21 13:16:44 by anonymous)