You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

numpy.where返回结果存疑:为何示例输出是这样?

理解np.where(condition)的返回值

别担心,这个问题其实挺常见的,我来给你一步步解释清楚~

首先要明确:当np.where只传入一个条件参数(没有后续的x和y参数)时,它的作用是找出数组中所有满足条件的元素的索引位置,返回的是一个元组,元组里的每个数组对应原数组的一个维度的索引值。

我们结合你的例子来看:
你的数组x是一个3×3的二维数组:

>>> x = np.arange(9.).reshape(3, 3)
>>> x
array([[ 0., 1., 2.],
       [ 3., 4., 5.],
       [ 6., 7., 8.]])

首先找出满足x > 5的元素:它们是第三行(数组索引从0开始,所以行号为2)的6、7、8,对应的位置分别是:

  • (2, 0):行索引2,列索引0
  • (2, 1):行索引2,列索引1
  • (2, 2):行索引2,列索引2

np.where会把这些位置的行索引和列索引分别收集成两个数组:

  • 所有满足条件元素的行索引都是2,所以第一个数组是array([2, 2, 2])
  • 对应的列索引依次是0、1、2,所以第二个数组是array([0, 1, 2])

你可以通过以下代码验证这个结果:

>>> x[np.where(x > 5)]
array([6., 7., 8.])

这会直接返回所有满足条件的元素,也能反向印证索引的正确性。

如果是更高维度的数组(比如3维),np.where会返回对应维度数量的索引数组,原理完全一致。

内容的提问来源于stack exchange,提问作者Invariance

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:51:31