You need to enable JavaScript to run this app. 能否使用Scipy minimizer最小化依赖两个不同长度1D数组的函数
优惠活动
大模型
产品
解决方案
定价
更多

能否使用Scipy minimizer最小化依赖两个不同长度1D数组的函数

Scipy minimize优化多长度数组参数的实现说明

结论

你设想的调用写法不正确,无法正常运行。

错误原因

scipy.optimize.minimize要求传入的初始参数x0必须是一维类数组结构,你传入的[x,y]是包含两个不同长度一维数组的列表,无法被接口正确解析为待优化的参数向量。

正确实现方案

你需要将所有待优化参数打平拼接为单个一维向量,再在目标函数内按预设长度拆分回对应形状的数组即可,示例实现如下:

步骤1:预处理初始参数

import numpy as np
from scipy.optimize import minimize

# 原始初始值
x_init = np.array([1,2,3,1,52,5])
y_init = np.array([4,8,9])

# 记录两个数组的长度,用于后续拆分
x_len = len(x_init)
y_len = len(y_init)

# 拼接为一维初始参数向量
init_params = np.concatenate([x_init, y_init])

步骤2:改写目标函数

def fun(params):
    # 从一维参数向量中拆分出x、y
    x = params[:x_len]
    y = params[x_len:]
    # 此处替换为你原本依赖x、y的损失计算逻辑即可
    return np.sum(x**2) + np.sum(y**2)

步骤3:调用minimize执行优化

res = minimize(fun, init_params, method="Powell", tol=1e-3)

# 优化完成后拆分得到最优的x、y
opt_x = res.x[:x_len]
opt_y = res.x[x_len:]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 07:42:04