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

如何用Python生成末行固定为0的全部唯一4x1矩阵组合?

问题修复方案

原有代码错误点

  • Matrix4x1函数内未定义变量j就直接调用,触发NameError
  • 矩阵初始化错误:np.zeros([4,0])生成的是4行0列的空矩阵,无法存储数据,你需要的是4行1列的矩阵
  • 遍历逻辑错误:双重循环无法生成你需要的「下标严格递增的三元组」,会出现重复/遗漏的组合,且你要排除原始数组最后一行的0,只从前6行选前三行的元素
  • 矩阵赋值逻辑错误:每个输入的arra/arrb/arrc都是单元素数组,不需要循环遍历下标赋值

修复后可运行代码

import numpy as np

# 生成4x1矩阵的工具函数
def Matrix4x1(arra, arrb, arrc):
    # 初始化4行1列的矩阵,默认值为0,最后一行不需要改正好符合要求
    matrix = np.zeros((4, 1), dtype=float)
    # 直接给前三行赋值即可
    matrix[0] = arra
    matrix[1] = arrb
    matrix[2] = arrc
    return matrix

# 生成所有符合要求的矩阵列表
def EnergyArrays(arr_e):
    listn = []
    # 前三行只从原始数组的前6个元素选取(最后一个是固定的0不用参与组合)
    selectable_len = len(arr_e) - 1
    # 遍历所有i<j<k的三元组,对应你要的按顺序选的规则
    for i in range(selectable_len - 2):
        for j in range(i + 1, selectable_len - 1):
            for k in range(j + 1, selectable_len):
                current_matrix = Matrix4x1(arr_e[i], arr_e[j], arr_e[k])
                listn.append(current_matrix)
    return listn

# 测试示例
if __name__ == "__main__":
    # 你的原始数组
    arr_e = [
        [-28.71703997],
        [-20.3186618],
        [-47.5926421],
        [-24.42789423],
        [-69.78148825],
        [-42.91613279],
        [0.0]
    ]
    result = EnergyArrays(arr_e)
    # 打印前两个结果验证格式
    for mat in result[:2]:
        print(mat)
        print()

运行输出验证

运行后前两个输出和你预期的格式完全一致:

[[-28.71703997]
 [-20.3186618 ]
 [-47.5926421 ]
 [  0.        ]]

[[-28.71703997]
 [-20.3186618 ]
 [-24.42789423]
 [  0.        ]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:57:02