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

为何numpy.where()返回两个数组?二维数组示例疑问

关于numpy中np.where()函数的行为解释

当你调用np.where(b)且只传入一个数组参数时,它的作用是返回数组中所有非零元素的索引,返回结果是一个元组,元组里的每个数组对应原数组的一个维度索引:

  • 对于二维数组,第一个数组是所有非零元素的行索引,第二个数组是对应的列索引

来看你的示例:

b = np.array([[1, 2, 3, 4, 5,6], [1,0,3,0,9,6]])
f = np.where(b)

先统计数组b里的非零元素数量:

  • 第一行[1,2,3,4,5,6]全是非零,共6个元素
  • 第二行[1,0,3,0,9,6]里,非零元素是1、3、9、6,共4个元素
    总共6+4=10个非零元素,所以返回的两个索引数组各有10个元素:
  • 行索引数组:前6个元素是0(对应第一行的所有非零元素),后4个是1(对应第二行的非零元素),即array([0, 0, 0, 0, 0, 0, 1, 1, 1, 1])
  • 列索引数组:依次对应每个非零元素的列位置,第一行的列索引是0-5,第二行的非零元素列索引是0、2、4、5,即array([0, 1, 2, 3, 4, 5, 0, 2, 4, 5])

把这两个索引数组配对,比如(0,0)对应b[0][0]=1,(1,2)对应b[1][2]=3,正好能定位到所有非零元素的位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 17:35:30