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

Python中如何按指定格式打印数组非零元素的位置

调整np.nonzero()输出为二维数组格式

给定如下NumPy数组,使用np.nonzero()识别非零元素位置时,输出是包含两个一维数组的元组,需要将其转换为每行对应一组坐标的二维数组格式:

现有代码:

import numpy as np

y=np.array([[ 0.0, -1.3e-08, 0.0 ],
            [-1.3e-08,  0.0, 1.4e-9],
            [0.0, 2.3e-7, 1.9e-6]])

Result=np.nonzero(y)
print(Result)

当前输出:

(array([0, 1, 1, 2, 2], dtype=int64), array([1, 0, 2, 1, 2], dtype=int64))

预期输出:

array([[0,1],[1,0],[1,2],[2,1],[2,2]])

解决方案

可以通过以下几种简单方式将输出转换为预期格式:

方法1:使用np.transpose()

直接对np.nonzero()的返回结果做转置操作:

import numpy as np

y=np.array([[ 0.0, -1.3e-08, 0.0 ],
            [-1.3e-08,  0.0, 1.4e-9],
            [0.0, 2.3e-7, 1.9e-6]])

result = np.transpose(np.nonzero(y))
print(result)

方法2:使用np.column_stack()

将np.nonzero()返回的行、列索引数组按列堆叠:

import numpy as np

y=np.array([[ 0.0, -1.3e-08, 0.0 ],
            [-1.3e-08,  0.0, 1.4e-9],
            [0.0, 2.3e-7, 1.9e-6]])

rows, cols = np.nonzero(y)
result = np.column_stack((rows, cols))
print(result)

方法3:利用数组转置属性.T

将np.nonzero()的结果转为数组后直接调用转置属性:

import numpy as np

y=np.array([[ 0.0, -1.3e-08, 0.0 ],
            [-1.3e-08,  0.0, 1.4e-9],
            [0.0, 2.3e-7, 1.9e-6]])

result = np.array(np.nonzero(y)).T
print(result)

以上三种方法的输出均与预期一致:

array([[0, 1],
       [1, 0],
       [1, 2],
       [2, 1],
       [2, 2]])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 05:45:41