Numpy中np.where多返回值的应用

Numpy中np.where多返回值的应用

在本文中,我们将介绍Numpy中np.where函数的用法,特别是当它返回多个值时的应用。

阅读更多:Numpy 教程

np.where函数简介

np.where是Numpy中非常常用的函数之一,用于根据条件返回指定位置的元素。np.where(condition, x, y)的用法如下:

  • condition: 布尔数组,指定条件,需要与x,y的形状一致;
  • x, y: 与condition形状相同的数组,存储值,x中condition为True的部分将被输出到结果数组中,y中condition为False的部分将被输出到结果数组中。

下面的例子可以帮助您更好地理解np.where函数。考虑以下两个数组a和b:

import numpy as np

a = np.array([1, 2, 3, 4, 5])
b = np.array([10, 20, 30, 40, 50])
Python

如果要找到a中所有大于2的元素,我们可以通过以下np.where语句来实现:

condition = a > 2
np.where(condition, a, 0)
Python

结果如下:

array([0, 0, 3, 4, 5])
Python

只有a > 2的元素被保留,其他位置上的元素全部设置为0。

np.where函数还可以用于二维数组,其语法与上述相同。例如,假设有以下数组a和b:

import numpy as np

a = np.array([[1, 2], [3, 4]])
b = np.array([[50, 50], [100, 100]])
condition = a > 2
np.where(condition, a, b)
Python

结果如下:

array([[50, 50],
       [ 3,  4]])
Python

只有a > 2的位置上的元素被保留了下来,其他的元素都被用b中相应位置的元素代替了。

多返回值的np.where函数

虽然np.where函数通常只返回一个数组,但如果条件数组包含多个True值,它将返回多个数组。下面的函数将创建一个小于10的原始数组,并返回其所有元素序号。

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [11, 12, 13]])
result = np.where(arr < 10)
Python

在以上的例子中,np.where返回两个值,第一个值是行索引数组,第二个是列索引数组。打印结果如下:

(array([0, 0, 0, 1, 1, 1, 2, 2, 2]), array([0, 1, 2, 0, 1, 2, 0, 1, 2]))
Python

这些索引数组指定了每个小于10的元素在二维数组中的位置。

同时,np.where函数还可用于生成新的数组。例如,我们可以使用以下代码通过np.where函数生成一个由1和0构成的二维数组:

arr = np.arange(10).reshape(5, 2)
result = np.where(arr > 3, 1, 0)
Python

在以上代码中,如果arr中的元素大于3,np.where返回1,否则返回0。

总结

本文讨论了Numpy中np.where多个返回值的应用程序。np.where函数用于根据条件返回数组中的元素,多个返回值通常情况下指定元素在数组中的位置和值。如果您有任何问题或建议,请不要犹豫,在评论区内给我们留言。谢谢阅读!

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册