NumPy-Maske 2D-Array

Salman Mehmood 15 Februar 2024
  1. Erstellen Sie eine Maske oder ein boolesches 2D-Array mit NumPy in Python
  2. Erstellen Sie eine Maske mit logischen Python-Operatoren
  3. Erstellen Sie eine Maske mit der logischen NumPy-Funktion
NumPy-Maske 2D-Array

Wir lernen mit dieser Erklärung, was die Maske oder das boolesche Array ist. Wir lernen auch, wie man eine 2D-Maske mit logischen P1ython-Operatoren und der logischen NumPy-Funktion in Python erstellt.

Erstellen Sie eine Maske oder ein boolesches 2D-Array mit NumPy in Python

Wir beginnen mit einem Array, auf das wir eine Bedingung anwenden, und dann generieren wir eine Maske oder ein boolesches Array. Stellen wir uns zum Beispiel nur ein Array von Ganzzahlen vor, das unten gezeigt wird, und wenden dann diese Bedingung an, die kleiner als fünf ist.

Das resultierende boolesche Array hätte die gleiche Form wie das Eingabearray und wäre nur eine Element-für-Element-Anwendung der Bedingung. In diesem Fall ist 8 kleiner als 5, also falsch, 2 kleiner als 5, also wahr, 1 kleiner als 5 wahr, und so weiter.

Manchmal stellt es eine Maske durch 0-1 dar, und das Falsche stellt 0 dar und 1 stellt wahr dar.

Boolesche Array-Maske

Erstellen Sie eine Maske mit logischen Python-Operatoren

Wir springen in den Code, indem wir numpy importieren und eine Variable namens My_2DArray erstellen, die mit einer Python 2d-Liste unter Verwendung eines numpy-Arrays gefüllt wird.

import numpy as np

My_2DArray = np.array([[-12, -31, 5], [7, 0, -9]])
print(My_2DArray)

Ausgang:

[[-12 -31   5]
 [  7   0  -9]]

Lassen Sie uns ein Beispiel haben, um Maske zu demonstrieren. Wir erstellen eine neue Variable namens zero_mod_array, die die Werte annimmt, bei denen My_2DArray mit dem Operator % durch 7 teilbar ist.

Wir selektieren alle Elemente im Array, bei denen der Rest nach Division durch 7 gleich Null ist.

Code:

import numpy as np

My_2DArray = np.array([[-12, -31, 5], [7, 0, -9]])

zero_mod_array = 0 == (My_2DArray % 7)
print(zero_mod_array)

Nach der Ausführung sehen wir, dass wir ein Array von booleschen Werten erstellt haben. Wenn wir uns das erste Element eines Arrays ansehen, das -12 ist, ist nicht durch 7 teilbar, und das nächste ist es auch nicht, aber das erste Element in der zweiten Liste ist 7, das durch 7 teilbar ist, und das zweite Element 0 ist auch durch 7 teilbar.

Daher sind beide Elemente bis auf andere Elemente True, weil alle Elemente nicht durch 7 teilbar sind, weshalb wir False-Werte an ihren Positionen erhalten haben.

Ausgang:

[[False False False]
 [ True True False]]

In diesem folgenden Beispiel erstellen wir eine Variable namens Sun_array, und dies wären wesentliche Elemente von Booleschen Maskenarrays. Wir nehmen My_2DArray und indizieren es mit den Ergebnissen, die wir in zero_mod_array erstellt haben.

Code:

import numpy as np

My_2DArray = np.array([[-12, -31, 5], [7, 0, -9]])

zero_mod_array = 0 == (My_2DArray % 7)

Sun_array = My_2DArray[zero_mod_array]
print(Sun_array)

Ausgang:

[7 0]

Lassen Sie uns Sun_array als Maskenarray verwenden, um sich selbst zu indizieren, indem wir die Elemente in Sun_array auswählen, die größer als 0 sind, und ein neues Array erstellen, das nur die positiven Elemente enthält.

Sun_array[Sun_array > 0]

In unserem Sun_array ist nur ein Element grösser als 7 array([7]). Wenn wir das Sun_array untersuchen, sehen wir, dass die Werte unverändert sind; es ist immer noch ein array([7, 0]).

Erstellen Sie eine Maske mit der logischen NumPy-Funktion

Lassen Sie uns eine alternative Methode untersuchen, um die gleiche Aufgabe zu erfüllen. In besonderer Weise werden wir logische NumPy-Operatoren verwenden.

Zuerst erstellen wir eine Variable namens mod_test, die die Ergebnisse des Restoperators wie oben zuweist.

Wir werden etwas Ähnliches tun und eine weitere Variable namens positive_test erstellen, und dieses Mal werden wir die Werte zuweisen, bei denen My_2DArray größer als Null ist, was bedeutet, dass es die booleschen Werte anzeigt, nachdem die Bedingung auf jedes Element von My_2DArray angewendet wurde. .

Wir erstellen eine weitere Variable namens combined_test, die die Funktion logical_and() verwendet und mod_test und positive_test als Argumente verwendet.

Code:

import numpy as np

My_2DArray = np.array([[-12, -31, 5], [7, 0, -9]])

mod_test = 0 == (My_2DArray % 7)
positive_test = My_2DArray > 0
combined_test = np.logical_and(mod_test, positive_test)
print(combined_test)

Nach der Ausführung sehen wir die perfekten booleschen Werte und es enthält nur einen Wert, der dem Array entspricht.

Ausgang:

[[False False False]
 [ True False False]]

Wir können combined_test verwenden, um unser ursprüngliches Array zu indizieren und den gleichen Wert zu erhalten, den wir oben erreicht haben.

Code:

import numpy as np

My_2DArray = np.array([[-12, -31, 5], [7, 0, -9]])

mod_test = 0 == (My_2DArray % 7)
positive_test = My_2DArray > 0
combined_test = np.logical_and(mod_test, positive_test)
print(My_2DArray[combined_test])

Ausgang:

[7]

Auf diese Weise können wir das NumPy 2d-Array mit zwei Techniken maskieren, um dasselbe Ergebnis zu erzielen.

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn