English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

NumPy 数组筛选

Online-Tools

NumPy-Tutorial

Array-Filterung

In NumPy verwenden wir Booleanische Indexlisten, um Arrays zu filtern.

Booleanische Indexlisten sind Listen mit Boolean-Werten, die mit den Indizes im Array korrespondieren. Trueentfernt wird, wenn der Wert Falseentfernt wird, wenn der Wert

mit Index 0 und 2,4 Ein Array aus den Elementen erstellt, die an der Stelle

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]

Das obige Beispiel gibt zurück [61, 63, 65]Warum?

da der neue Filter nur die Werte des Filterarrays enthält True Werte, daher beträgt der Index 0 und 2,4.

Filterarray erstellen

im obigen Beispiel, wir erstellen True und False Werte sind fest codiert, aber der allgemeine Gebrauch ist die Erstellung eines Filterarrays basierend auf Bedingungen.

创建一个仅返回大于 62 的值的过滤器数组:

import numpy as np
arr = np.array([61, 62, 63, 64, 65])
 # Erstelle eine leere Liste
filter_arr = []
 # Durchlaufe jeden Element in arr
for element in arr:
  # Wenn das Element größer als 62den Wert auf True setzen, andernfalls auf False:
  if element > 62:
    filter_arr.append(True)
  else:
    filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

运行结果:

[False, False, True, True, True]
[63 64 65]

创建一个过滤器数组,该数组仅返回原始数组中的偶数元素:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
 # Erstelle eine leere Liste
filter_arr = []
 # Durchlaufe jeden Element in 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)

运行结果:

[False,   True,   False,   True,   False,   True,   False]
[2 4 6]

直接从数组创建过滤器

上例是 NumPy 中非常常见的任务,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)

运行结果:

[False   False   True   True   True]
[63 64 65]

创建一个过滤器数组,该数组仅返回原始数组中的偶数元素:

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)

运行结果:

[False   True   False   True   False   True   False]
[2 4 6]