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

如何对3D NumPy数组提取2D对角线求和并得到shape为(3,10)的结果

解决方法

错误原因

你原有代码遍历的偏移量范围是range(XRN_LEN),也就是range(4),对应你选择的两个对角线轴(维度分别为3和4)的4个正偏移,所以输出形状是(4,10),和预期不符。

实现代码

如果你要保留原有跨第一、第二维度取对角线的逻辑,仅调整输出形状为(3,10)

只要把偏移量遍历范围改成第一维的长度3即可:

RIGHT = [XRN.diagonal(i, axis1=0, axis2=1).sum(axis=1) for i in range(XRN.shape[0])]
np_RIGHT = np.array(RIGHT)
print(np_RIGHT.shape) # 输出 (3, 10)

如果你是要对每个独立的2D切片(每个第一维对应的4行10列矩阵)分别求对角线和

如果你需要的是3个2D矩阵各自的10个对角线偏移的求和结果,用以下代码:

result = []
for single_mat in XRN:
    # 遍历10个偏移量,覆盖所有列方向的对角线
    diag_sum_list = [single_mat.diagonal(offset=o).sum() for o in range(single_mat.shape[1])]
    result.append(diag_sum_list)
result = np.array(result)
print(result.shape) # 输出 (3, 10)

补充

如果需要计算反对角线和,可先将矩阵左右翻转再取对角线:np.fliplr(single_mat).diagonal(offset=o).sum()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:09:03