Φιλτράρισμα Αρχείων NumPy

Φιλτράρισμα πίνακα

Δημιουργία νέου πίνακα από μερικά στοιχεία του υπάρχοντος πίνακα ονομάζεται φιλτράρισμα (filtering).

Στο NumPy, χρησιμοποιούμε λίστες μοναδικών ενδикαστών για να φιλτράρουμε πίνακες.

Λίστα μοναδικών ενδикαστών είναι μια λίστα μοναδικών τιμών που αντιστοιχεί στις ινδάλματα του πίνακα.

Εάν το στοιχείο περιέχει στο φίλτρο μετά από το φίλτρο; TrueΕάν το στοιχείο περιέχει στο φίλτρο μετά από το φίλτρο; FalseΕάν το στοιχείο θα αφαιρεθεί από τον πίνακα μετά από το φίλτρο.

Παράδειγμα

Δημιουργία ενός πίνακα από τα στοιχεία με τις ινδάλματα 0 και 2, 4:

import numpy as np
arr = np.array([61, 62, 63, 64, 65])
x = [True, False, True, False, True]
newarr = arr[x]
print(newarr)

Εκτέλεση παραδείγματος

Το παρακάτω παράδειγμα θα επιστρέψει [61, 63, 65]Γιατί;

Γιατί το νέο φίλτρο περιέχει μόνο τιμές από τον πίνακα φίλτρων; True της τιμής, οπότε σε αυτή την περίπτωση, οι ινδάλματα είναι 0 και 2, 4.

του

Στο παρακάτω παράδειγμα, δημιουργούμε τον πίνακα φίλτρων True και False Η τιμή είναι σκληροκωδικοποιημένη, αλλά η συνήθης χρήση είναι η δημιουργία πίνακα φίλτρων με βάση τις προϋποθέσεις.

Παράδειγμα

Δημιουργία ενός φίλτρου πίνακα που επιστρέφει μόνο τιμές μεγαλύτερες από 62:

import numpy as np
arr = np.array([61, 62, 63, 64, 65])
# Δημιουργία κενής λίστας
filter_arr = []
# Διάβαση κάθε στοιχείου στο arr
for element in arr:
  # Αν το στοιχείο είναι μεγαλύτερο από 62, τότε η τιμή ορίζεται ως True, αλλιώς ως False:
  εάν το στοιχείο > 62:
    filter_arr.append(True)
  else:
    filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

Εκτέλεση παραδείγματος

Παράδειγμα

Δημιουργία ενός φίλτρου πίνακα που επιστρέφει μόνο τα οδόντα στοιχεία του αρχικού πίνακα:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
# Δημιουργία κενής λίστας
filter_arr = []
# Διάβαση κάθε στοιχείου στο arr
for element in arr:
  # Αν το στοιχείο μπορεί να διαιρεθεί από 2, τότε ορίζεται το όρισμα ως True, αλλιώς ως False
  if element % 2 == 0:
    filter_arr.append(True)
  else:
    filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

Εκτέλεση παραδείγματος

Δημιουργία φίλτρου πίνακα άμεσα από τον πίνακα

Το παράδειγμα αυτό είναι μια πολύ συχνή εργασία στο NumPy, το οποίο παρέχει καλή λύση στο πρόβλημα.

Μπορούμε να αντικαταστήσουμε άμεσα τον πίνακα αντί για την μεταβλητή iterable, και θα λειτουργήσει όπως αναμένουμε.

Παράδειγμα

Δημιουργία ενός φίλτρου πίνακα που επιστρέφει μόνο τιμές μεγαλύτερες από 62:

import numpy as np
arr = np.array([61, 62, 63, 64, 65])
filter_arr = arr > 62
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

Εκτέλεση παραδείγματος

Παράδειγμα

Δημιουργία ενός φίλτρου πίνακα που επιστρέφει μόνο τα οδόντα στοιχεία του αρχικού πίνακα:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
filter_arr = arr % 2 == 0
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

Εκτέλεση παραδείγματος