NumPy Filter Skikking


Filtreer skikkings

Om sommige elemente uit 'n bestaande skikking te kry en 'n nuwe skikking daaruit te skep, word filtering genoem .

In NumPy filtreer jy 'n skikking deur 'n Boolese indekslys te gebruik .

'n Boolese indekslys is 'n lys van Boolese wat ooreenstem met indekse in die skikking.

As die waarde by 'n indeks is Truedat die element in die gefiltreerde skikking vervat is, as die waarde by daardie indeks is , word Falsedaardie element uitgesluit van die gefiltreerde skikking.

Voorbeeld

Skep 'n skikking van die elemente op indeks 0 en 2:

import numpy as np

arr = np.array([41, 42, 43, 44])

x = [True, False, True, False]

newarr = arr[x]

print(newarr)

Die voorbeeld hierbo sal terugkeer [41, 43], hoekom?

Omdat die nuwe filter slegs die waardes bevat waar die filterskikking die waarde gehad Truehet, in hierdie geval, indeks 0 en 2.


Die skep van die Filter Array

True In die voorbeeld hierbo het ons die en Falsewaardes hard gekodeer , maar die algemene gebruik is om 'n filter skikking te skep gebaseer op toestande.

Voorbeeld

Skep 'n filterskikking wat slegs waardes hoër as 42 sal terugstuur:

import numpy as np

arr = np.array([41, 42, 43, 44])

# Create an empty list
filter_arr = []

# go through each element in arr
for element in arr:
  # if the element is higher than 42, set the value to True, otherwise False:
  if element > 42:
    filter_arr.append(True)
  else:
    filter_arr.append(False)

newarr = arr[filter_arr]

print(filter_arr)
print(newarr)


Voorbeeld

Skep 'n filter skikking wat net ewe elemente van die oorspronklike skikking sal terugstuur:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7])

# Create an empty list
filter_arr = []

# go through each element in arr
for element in arr:
  # if the element is completely divisble by 2, set the value to True, otherwise False
  if element % 2 == 0:
    filter_arr.append(True)
  else:
    filter_arr.append(False)

newarr = arr[filter_arr]

print(filter_arr)
print(newarr)

Skep filter direk vanaf skikking

Die voorbeeld hierbo is nogal 'n algemene taak in NumPy en NumPy bied 'n goeie manier om dit aan te pak.

Ons kan die skikking direk vervang in plaas van die herhaalbare veranderlike in ons toestand en dit sal werk net soos ons dit verwag.

Voorbeeld

Skep 'n filterskikking wat slegs waardes hoër as 42 sal terugstuur:

import numpy as np

arr = np.array([41, 42, 43, 44])

filter_arr = arr > 42

newarr = arr[filter_arr]

print(filter_arr)
print(newarr)

Voorbeeld

Skep 'n filter skikking wat net ewe elemente van die oorspronklike skikking sal terugstuur:

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)