Numpy Zugriff auf Arrayelemente und Iteration

Beginner

Einführung

In diesem Lab werden wir lernen, wie man das numpy.nditer-Objekt verwendet, um über ein NumPy-Array zu iterieren und auf seine einzelnen Elemente zuzugreifen. Wir werden auch lernen, wie man die Elemente eines Arrays mithilfe des op_flags-Parameters des nditer-Objekts modifiziert. Schließlich werden wir die Broadcasting in NumPy-Arrays mithilfe des nditer-Objekts kennenlernen.

VM-Tipps

Nachdem die VM gestartet ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Operationen kann aufgrund der Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.

Erstellen eines ndarrays und Iterieren über es mit numpy.nditer

In diesem Schritt werden wir ein eindimensionales NumPy-Array mit der arange()-Methode erstellen und dann über es mit dem numpy.nditer-Objekt iterieren.

import numpy as np

a = np.arange(0,40,5)

print ("Das ursprüngliche Array ist:")
print (a)
print ('\n')

## Ausgabe der Elemente des Arrays nacheinander
print ("Das modifizierte Array ist:")
for x in np.nditer(a):
    print(x)

Iteriere über die Transponierte eines Arrays

In diesem Schritt werden wir ein zweidimensionales NumPy-Array nehmen, seine Transponierte finden und über sie mit dem nditer-Objekt iterieren.

import numpy as np

a = np.array([[11,2,3,4],[29,4,15,6],[11,21,39,31]])
print("Das Array ist :")
print(a)

print("Die Transponierte des Arrays ist :")
at = a.T
print(at)

print("Iteriere über das Array:")
for x in np.nditer(at):
    print(x, end=' ')

Iteriere über ein Array in C-Style-Order und in F-Style-Order

In diesem Schritt werden wir ein zweidimensionales NumPy-Array erstellen, seine Transponierte finden und dann über sie in sowohl C-Style- als auch F-Style-Reihenfolge mit dem nditer-Objekt iterieren.

import numpy as np

a = np.array([[1,2,3,4],[8,9,5,6],[10,20,29,31]])
print("\nDas Array wird ausgegeben:\n")
print(a)

print("\nDie Transponierte des Arrays wird ausgegeben:\n")
at = a.T
print(at)

print("\nIteriere über die transponierte Matrix in F-Style-Reihenfolge:\n")
for x in np.nditer(at, order='F'):
    print(x, end=' ')

print("\nIteriere über die transponierte Matrix in C-Style-Reihenfolge:\n")
for x in np.nditer(at, order='C'):
    print(x, end=' ')

Iteriere über mehrere Arrays unter Verwendung von Broadcasting

In diesem Schritt werden wir zwei NumPy-Arrays unterschiedlicher Dimensionen erstellen und über sie mit Broadcasting mit dem nditer-Objekt iterieren.

import numpy as np

a = np.arange(0,60,5)
a = a.reshape(3,4)

print ('Das erste Array :')
print (a)
print ('\n')

print ('Das zweite Array ist')
b = np.array([1, 2, 3, 4], dtype = int)
print (b)
print ('\n' )

print ('Das modifizierte Array ist')
for x,y in np.nditer([a,b]):
    print ("%d:%d" %(x,y))

Ändere die Werte eines Arrays mit Hilfe von op_flags

In diesem Schritt werden wir ein eindimensionales NumPy-Array erstellen, über es mit dem nditer-Objekt iterieren, wobei der op_flags-Parameter auf 'readwrite' gesetzt wird, und dann die Elemente des Arrays ändern, während wir über sie iterieren.

import numpy as np

a = np.arange(0,50,6)
a = a.reshape(3,3)

print ('Das ursprüngliche Array ist:')
print (a)
print ('\n')

for x in np.nditer(a, op_flags=['readwrite']):
    x[...] = 2 + x

print ('Das modifizierte Array ist:')
print (a)

Zusammenfassung

In diesem Lab haben wir gelernt, wie man das nditer-Objekt in NumPy verwendet, um über Arrays zu iterieren, und wie man die Elemente eines Arrays während der Iteration mithilfe des op_flags-Parameters modifiziert. Wir haben auch über das Broadcasting in NumPy-Arrays gelernt, indem wir das nditer-Objekt verwenden, um gleichzeitig über mehrere Arrays zu iterieren.