np.where 和 np.argwhere的区别

np.wherenp.argwhere 都是NumPy库中用于条件查找的函数,但它们有一些重要的区别:

  1. 返回类型:

    • np.where 返回满足条件的元素的坐标作为元组。如果是多维数组,返回的是两个分别包含满足条件的行坐标和列坐标的数组(或多维坐标)。
    • np.argwhere 返回满足条件的元素的坐标作为多维数组,其中每一行都包含一个坐标。
  2. 返回值的形状:

    • np.where 返回的坐标元组的形状与输入数组的形状相同,只不过每个坐标都是布尔条件下的索引。
    • np.argwhere 返回的多维数组的形状与满足条件的元素数量有关,它的第一维的大小等于满足条件的元素数量。

下面是一个示例来说明它们之间的区别:

import numpy as np

arr = np.array([[1, 2, 3],
                [4, 5, 6],
                [7, 8, 9]])

# 使用 np.where 查找满足条件的元素
indices = np.where(arr > 5)
print("np.where 返回的坐标元组:", indices)

# 使用 np.argwhere 查找满足条件的元素
arg_indices = np.argwhere(arr > 5)
print("np.argwhere 返回的多维坐标数组:", arg_indices)

在这里插入图片描述

在上述示例中,np.where 返回的是一个包含两个数组的元组,分别代表满足条件的元素的行坐标和列坐标。而 np.argwhere 返回的是一个包含坐标的多维数组,其中每行包含一个坐标。

根据你的需求,你可以选择使用其中一个来查找满足条件的元素的坐标。如果你只关心满足条件的元素的位置,np.argwhere 可能更方便,因为它直接返回坐标数组。如果你需要在输入数组的相同形状中标记条件下的元素,那么 np.where 可能更适合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值