📜  numpy.where - Python (1)

📅  最后修改于: 2023-12-03 15:18:03.791000             🧑  作者: Mango

numpy.where - Python

numpy.where函数是Numpy库中用于根据特定条件返回数组中对应元素索引的函数。在本文中,我们将涵盖以下主题:

  • 函数语法和用法
  • 对于不同数组类型使用该函数的示例
  • 与其他Numpy函数联合使用的实际示例
函数语法和用法

numpy.where(condition, [x, y])函数的语法如下:

where(condition[, x, y])
  • 参数condition是一个条件数组,其中每个元素都会被满足或不满足
  • 可选参数xy是数组,它们相同的位置对应于condition为True和False的元素。只有当两者都提供时,才能使用这些参数。

numpy.where返回的结果是一个元组,其中包括满足条件的索引的元素的数组。其中,满足条件的元素在返回数组的第一维中排列,例如在以下示例中。

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])
arr_search = np.where(arr%2==0)

print(arr_search)

输出:

(array([1, 3, 5]),)

使用Numpy或Pandas库时,numpy.where函数可以作为数值替换的有用工具。另外,numpy.where函数还可以与不同数组类型一起使用,并针对不同条件产生不同的结果。

对于不同数组类型使用该函数的示例

在本小节中,我们将探讨如何在多个数组类型中使用numpy.where函数。

1.对于多个布尔数组使用的示例
import numpy as np

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

arr_gt_5 = arr > 5
arr_eq_0 = arr == 0

arr_search = np.where(arr_gt_5 & arr_eq_0)

print(arr_search)

在上面的示例中,我们使用了两个布尔数组arr_gt_5arr_eq_0np.where返回一个元组,其中第一个元素是等于条件的索引,此时第一个索引值为1,第二个索引值为2。

输出:

(array([1]), array([2]))
2.对于多个数组使用的示例

在本示例中,我们将使用两个numpy数组‘a’和‘b’并查找每个相同索引位置的最小值。

import numpy as np

a = np.array([2, 4, 5, 8, 0, 6])
b = np.array([1, 3, 5, 6, 7, 8])

min_values = np.where(a < b, a, b)

print(min_values)

输出:

[1 3 5 6 0 6]

这里我们将使用np.where对于a < b的所有位置上的最小值进行求得。

与其他Numpy函数联合使用的实际示例

np.where函数可以与其他Numpy函数联合使用以更方便地操作多个数组。在本示例中,我们将通过过滤负数来使用np.where和np.zeros接口。

import numpy as np

arr = np.array([[0.1, -1.8, 1.0],
                [2.3, -0.8, -3.2]])

print('Original array:')
print(arr)

filtered_arr = np.where(arr < 0, 0, arr)

print('Filtered array:')
print(filtered_arr)

在上面的示例中,我们首先打印原始数组。然后,使用np.wherenp.zeros过滤所有负数值,并打印新数组。输出如下:

Original array:
[[ 0.1 -1.8  1. ]
 [ 2.3 -0.8 -3.2]]
 
Filtered array:
[[0.1 0.  1. ]
 [2.3 0.  0. ]]
结论

现在,您已经了解了numpy.where函数的语法和用法,以及如何在多个数组类型中使用它。通过在不同类型的数组中使用该函数,您可以获得更准确的搜索结果并更方便地处理Numpy数组。如果您需要进一步探索Numpy库的功能,则建议您参考Numpy官方文档。