多个条件使用Numpy where函数

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

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/479731.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希新媒体运营
上一篇 2024-04-15 16:56
下一篇 2024-04-15 16:58

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入