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

Python中获取含非零元素的数组行号及对应非零元素位置

问题解决:获取NumPy数组中非零元素所在行及对应列索引

现有Python代码可打印出NumPy数组A中至少包含一个非零元素的行号solution1,当前输出为solution 1 = [1,2]。现需同时输出这些行中各自非零元素的列位置solution2,期望输出为solution 1 = [1,2],solution 2 = [[1,3,4,6],[0,2,3,5]]。

原代码如下:

import numpy as np

A=np.array([[  0.        ,   0.        ,   0.        ,   0.        ,
          0.        ,   0.        ,   0.        ,   0.        ,
          0.        ,   0.        ,   0.        ,   0.        ],
       [  0.        , 423.81345923,   0.        , 407.01354328,
        419.14952534,   0.        , 212.13245959,   0.        ,
          0.        ,   0.        ,   0.        ,   0.        ],
       [402.93473651,   0.        , 216.08166277, 407.01354328,
          0.        , 414.17017965,   0.        ,   0.        ,
          0.        ,   0.        ,   0.        ,   0.        ]])


solution1 = []
for idx, e in enumerate(A):
    if any(e): 
        solution1.append(idx)
print("solution 1 =",solution1)

修改后的代码

import numpy as np

A=np.array([[  0.        ,   0.        ,   0.        ,   0.        ,
          0.        ,   0.        ,   0.        ,   0.        ,
          0.        ,   0.        ,   0.        ,   0.        ],
       [  0.        , 423.81345923,   0.        , 407.01354328,
        419.14952534,   0.        , 212.13245959,   0.        ,
          0.        ,   0.        ,   0.        ,   0.        ],
       [402.93473651,   0.        , 216.08166277, 407.01354328,
          0.        , 414.17017965,   0.        ,   0.        ,
          0.        ,   0.        ,   0.        ,   0.        ]])


solution1 = []
solution2 = []
for idx, row in enumerate(A):
    # 获取当前行非零元素的列索引并转为列表
    non_zero_cols = np.where(row != 0)[0].tolist()
    if non_zero_cols:
        solution1.append(idx)
        solution2.append(non_zero_cols)
print("solution 1 =", solution1)
print("solution 2 =", solution2)

改动说明

  • 新增solution2列表,用于存储每行非零元素对应的列索引
  • 使用np.where(row != 0)[0]定位当前行的非零元素列位置,通过.tolist()转换为Python列表
  • 当该行存在非零元素时,同步将行号加入solution1,列索引列表加入solution2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:40:26