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

从三维NumPy数组生成二维数组:提取最上层活跃层编号

解决方案

可以直接用NumPy的argmax函数实现需求:它会沿着指定轴返回第一个最大值的索引——由于你的数组元素只有0和1,第一个出现的1就是最大值,对应的索引就是你要的最上层活跃层号;如果某个位置全为0,argmax会返回0,刚好符合你要求的结果。

代码示例

import numpy as np

# 构造你给出的示例三维数组
example_3d = np.array([
    [[0., 1., 0., 0.],
     [1., 0., 0., 0.],
     [1., 0., 0., 0.]],
    [[0., 1., 1., 0.],
     [1., 1., 0., 0.],
     [1., 1., 0., 0.]],
    [[0., 0., 1., 1.],
     [0., 1., 1., 0.],
     [0., 1., 1., 0.]],
    [[0., 0., 1., 1.],
     [0., 1., 1., 1.],
     [0., 1., 1., 1.]]
])

# 沿着层的维度(轴0)取第一个1的层号
result_2d = np.argmax(example_3d, axis=0)
print(result_2d)

运行后输出:

[[0 0 1 2]
 [0 1 2 3]
 [0 1 2 3]]

和你预期的结果完全一致。

针对你的实际数据

你的三维数组维度是(39, 279, 153),层是第一个维度,直接复用上述逻辑即可:

# 假设你的三维数组名为model_domain
result = np.argmax(model_domain, axis=0)

为什么求和/平均方案不行

求和是统计每个位置激活的总层数,平均是激活层的层数平均值,这两个都无法定位到第一个激活的层,自然得不到你要的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 16:25:35