📅  最后修改于: 2023-12-03 15:18:03.791000             🧑  作者: Mango
numpy.where
函数是Numpy库中用于根据特定条件返回数组中对应元素索引的函数。在本文中,我们将涵盖以下主题:
numpy.where(condition, [x, y])
函数的语法如下:
where(condition[, x, y])
condition
是一个条件数组,其中每个元素都会被满足或不满足x
和y
是数组,它们相同的位置对应于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
函数。
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_5
和arr_eq_0
。np.where
返回一个元组,其中第一个元素是等于条件的索引,此时第一个索引值为1,第二个索引值为2。
输出:
(array([1]), array([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
的所有位置上的最小值进行求得。
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.where
和np.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官方文档。