在NumPy中,where和take是两个非常有用的函数,它们可以用于处理数组。
1.numpy.where() 函数返回输入数组中满足给定条件的元素的索引。它的基本语法如下:
numpy.where(condition[, x, y])
condition:当只有条件时,返回满足条件的元素的索引。
x, y:当给出条件以及两个数组时,返回满足条件从 x 中提取的元素的数组,不满足条件的从 y 中提取的元素的数组。
示例:
#我的Python教程
#微信公众号:wdPython
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
indices = np.where(arr > 25)
print(indices) # 输出:(array([3, 4]),)
在这个示例中,如果x中的元素大于25,则返回该元素,否则返回y中对应的元素。
- numpy.take()函数从输入数组中提取一个序列的元素并返回。它的基本语法如下:
numpy.take(a, indices[, axis])
a:输入数组。
indices:要提取的元素的索引。
axis:可选参数,提取元素的轴。默认是0。如果轴的标签是负数,则它们表示从右到左的距离。如果给出多个轴,则输入数组应该是一维的。
import numpy as np
arr = np.array([[10, 20], [30, 40], [50, 60]])
indices = [1, 2] # 在每一行中提取第1个和第3个元素(Python是从0开始计数的)
result = np.take(arr, indices)
print(result) # 输出:[[30 40] [50 60]]