NumPy array filter

数组过滤

从现有数组中取出一些元素并从中创建新数组称为过滤(filtering)。

在 NumPy 中,我们使用布尔索引列表来过滤数组。

布尔索引列表是与数组中的索引相对应的布尔值列表。

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

Anfani

用索引 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)

Gudanar Anfani

上例将返回 [61, 63, 65],为什么?

因为新过滤器仅包含过滤器数组有值 True 的值,所以在这种情况下,索引为 0 和 2、4。

创建过滤器数组

在上例中,我们对 TrueFalse 值进行了硬编码,但通常的用途是根据条件创建过滤器数组。

Anfani

Anfasi kara kara kara tashi daga hanyar tashi na farko kuma yana cikin tashi na farko kuma yana cikin tashi na farko:

import numpy as np
arr = np.array([61, 62, 63, 64, 65])
# Anfasi kara kara kara tashi daga hanyar tashi na farko kuma yana cikin tashi na farko kuma yana cikin tashi na farko:
filter_arr = []
# Anfasi kara kara kara tashi daga hanyar tashi na farko kuma yana cikin tashi na farko kuma yana cikin tashi na farko:
for element in arr:
  # 如果元素大于 62,则将值设置为 True,否则为 False:
  if element > 62:
    filter_arr.append(True)
  else:
    filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

Gudanar Anfani

Anfani

Anfasi kara kara kara tashi daga hanyar tashi na farko kuma yana cikin tashi na farko kuma yana cikin tashi na farko:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
# Anfasi kara kara kara tashi daga hanyar tashi na farko kuma yana cikin tashi na farko kuma yana cikin tashi na farko:
filter_arr = []
# Anfasi kara kara kara tashi daga hanyar tashi na farko kuma yana cikin tashi na farko kuma yana cikin tashi na farko:
for element in arr:
  # Idan element zai iya kaiwa 2, za a rarraba wa True, amma idan zai iya kaiwa False, za a rarraba wa False
  if element % 2 == 0:
    filter_arr.append(True)
  else:
    filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

Gudanar Anfani

Anfasi tashi daga hanyar tashi na farko

Anfani na yau yana cikin aiki na tsawon NumPy, NumPy ya kuma taimaka a hanyar da yake samar da sabon hanyar.

Aza zama zai iya kara kara kara tashi daga hanyar tashi na farko kuma yana cikin tashi na farko kuma yana cikin tashi na farko:

Anfani

Anfasi kara kara kara tashi daga hanyar tashi na farko kuma yana cikin tashi na farko kuma yana cikin tashi na farko:

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)

Gudanar Anfani

Anfani

Anfasi kara kara kara tashi daga hanyar tashi na farko kuma yana cikin tashi na farko kuma yana cikin tashi na farko:

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)

Gudanar Anfani