Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

NumPy 数组过滤


数组过滤

从现有数组中获取一些元素并用它们创建一个新数组的过程称为过滤

在 NumPy 中,可以使用布尔索引列表过滤数组。

布尔索引列表是一个布尔值列表,对应于数组中的索引。

如果某个索引处的值为True,则该元素包含在过滤后的数组中;如果该索引处的值为False,则该元素被排除在过滤后的数组之外。

示例

从索引 0 和 2 上的元素创建一个数组

import numpy as np

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

x = [True, False, True, False]

newarr = arr[x]

print(newarr)
自己尝试一下 »

上面的示例将返回[41, 43],为什么?

因为新数组仅包含过滤数组值为True的元素,在本例中,为索引 0 和 2。


创建过滤数组

在上面的示例中,我们硬编码了TrueFalse值,但常见的用法是根据条件创建过滤数组。

示例

创建一个过滤数组,只返回大于 42 的值

import numpy as np

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

# 创建一个空列表
filter_arr = []

# 遍历 arr 中的每个元素
for element in arr
  # 如果元素大于 42,则将值设置为 True,否则设置为 False
  if element > 42
    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 中是一项非常常见的任务,NumPy 提供了一种很好的方法来解决它。

我们可以直接用数组替换条件中的可迭代变量,它将按我们预期的那样工作。

示例

创建一个过滤数组,只返回大于 42 的值

import numpy as np

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

filter_arr = arr > 42

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)
自己尝试一下 »


×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.