本文共 1440 字,大约阅读时间需要 4 分钟。
numpy.where是一个强大的函数,用于根据条件选择数组中的元素。它有两种主要用法,具体取决于是否传递x和y参数。
这种用法最为常用。它接受三个参数:
函数返回一个新的数组,其中满足条件的位置取自x,不满足条件的位置取自y。返回的数组类型与x和y一致。
示例:
import numpy as npcondition = np.array([[True, False], [True, True]])x = np.array([[1, 2], [3, 4]])y = np.array([[9, 8], [7, 6]])result = np.where(condition, x, y)print(result) # 输出:[[1, 8], [3, 4]]
如果只传递condition参数,不传递x和y,函数会返回满足条件的元素的坐标。这种用法等价于numpy.nonzero(condition),但返回的坐标类型是tuple,而不是数组。
示例:
import numpy as npcondition = np.array([[True, False], [True, True]])indices = np.where(condition)print(indices) # 输出:((0, 0), (0, 1))
numpy.nonzero(condition)函数返回满足条件的元素的坐标。返回类型是一个包含多个数组的tuple,数组的数量等于输入数组的维度。每个数组表示该维度中非零元素的索引。
示例:
import numpy as npa = np.array([1, 2, 3, 0, 4, 5])non_zero = np.nonzero(a)print(non_zero) # 输出:(array([0, 1, 3, 5]),)
import numpy as npb = np.array([ [1, 2], [3, 4], [0, 0]])non_zero = np.nonzero(b)print(non_zero) # 输出:((0, 0), (0, 1))
import numpy as npc = np.array([ [[1, 2], [3, 4]], [[5, 6], [7, 8]]])non_zero = np.nonzero(c)print(non_zero) # 输出:((0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1))
这些函数在数据处理和分析中非常有用,尤其是在需要根据条件筛选数据时。
转载地址:http://bfwr.baihongyu.com/