Numpy的where函数是一个非常有用的函数,它可以帮助我们在数组中根据指定的条件替换元素,这个函数的基本语法如下:
numpy.where(condition[, x, y])
condition是一个布尔数组,表示我们想要替换元素的条件;x和y是我们想要替换成的值,它们可以是标量、数组或者其它数据类型。
下面我们来看一些具体的使用例子。
1、使用单个条件替换元素
假设我们有一个数组a,我们想要将数组中所有大于0的元素替换为1,所有小于0的元素替换为1,可以使用以下代码:
import numpy as np a = np.array([2, 1, 0, 1, 2]) result = np.where(a > 0, 1, a) print(result)
输出结果为:[2 1 0 1 1]
可以看到,数组中所有大于0的元素都被替换为了1,而所有小于0的元素则被替换为了1。
2、使用多个条件替换元素
我们需要根据多个条件来替换元素,我们有一个数组b,我们想要将数组中所有大于0且小于5的元素替换为3,所有大于5的元素替换为5,可以使用以下代码:
import numpy as np b = np.array([2, 1, 0, 1, 2, 6]) result = np.where((b > 0) & (b < 5), 3, np.where(b > 5, 5, b)) print(result)
输出结果为:[2 1 3 3 3 5]
可以看到,数组中所有大于0且小于5的元素都被替换为了3,而所有大于5的元素则被替换为了5。
3、根据条件选择多个值进行替换
我们需要根据条件选择不同的值进行替换,我们有一个数组c,我们想要将数组中所有大于0的元素替换为1或2,可以根据元素的位置来决定替换成哪个值,可以使用以下代码:
import numpy as np c = np.array([2, 1, 0, 1, 2]) result = np.where(c > 0, np.random.choice([1, 2], size=len(c)), c) print(result)
输出结果为:[2 1 2 1 2]
(由于是随机选择的,所以每次运行结果可能不同)
可以看到,数组中所有大于0的元素都被替换为了1或2,而所有小于等于0的元素则保持不变。
4、根据条件选择多个值进行替换(多维数组)
对于多维数组,我们可以使用相同的方法进行替换,我们有一个二维数组d,我们想要将数组中所有大于0的元素替换为1或2,可以根据元素的位置来决定替换成哪个值,可以使用以下代码:
import numpy as np d = np.array([[2, 1], [0, 1], [2, 3]]) result = np.where(d > 0, np.random.choice([1, 2], size=d.shape), d) print(result)
输出结果为:[[2 1 2 1] [2 1 1 3] [2 1 2 3]]
(由于是随机选择的,所以每次运行结果可能不同)
可以看到,数组中所有大于0的元素都被替换为了1或2,而所有小于等于0的元素则保持不变,我们可以看到where函数可以自动处理多维数组的广播。
Numpy的where函数是一个非常强大的函数,它可以帮助我们根据指定的条件替换数组中的元素,通过组合不同的条件和值,我们可以实现非常灵活的替换操作,需要注意的是,where函数返回的是一个视图对象,而不是一个新的数组,这意味着对返回的结果进行修改会影响到原始数组,如果需要创建一个新的数组,可以使用copy()方法。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/479731.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复