云主机测评网云主机测评网云主机测评网

云主机测评网
www.yunzhuji.net

多个条件使用Numpy where函数

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()方法。

打赏
版权声明:主机测评不销售、不代购、不提供任何支持,仅分享信息/测评(有时效性),自行辨别,请遵纪守法文明上网。
文章名称:《多个条件使用Numpy where函数》
文章链接:https://www.yunzhuji.net/jishujiaocheng/46450.html

评论

  • 验证码