【分配问题】linear_sum_assignment 极速教程


from scipy.optimize import linear_sum_assignment

函数输入输出解析:

  • 主要 Parameters:
    • cost_matrix:[array] → \to 代价矩阵
  • 返回 Returns:
    • row_ind, col_ind:[array] → \to 行列 idx 序列

代码参考:

import numpy as np
from scipy.optimize import linear_sum_assignment


## 构造输入:cost_matrix
cost_matrix = np.array([[4, 1, 3], [2, 0, 5], [3, 2, 2]])


## 获取输出:row_ind, col_ind
row_ind, col_ind = linear_sum_assignment(cost)
print(row_ind)  # array([0, 1, 2]): 0 ~ 行列维度较小值
print(col_ind)  # array([1, 0, 2]): 优化得到的匹配的列 idx	

# 基于 row_ind, col_ind 可获取最优分配对应的代价
sum_of_cost = cost[row_ind, col_ind].sum()
print(sum_of_cost)  # 5
### 如何正确导入 `scipy.optimize.linear_sum_assignment` 并解决 `ImportError` 当尝试使用 `from scipy.optimize import linear_sum_assignment as linear_assignment` 导入时遇到问题,通常是因为 SciPy 版本过低或其他依赖项缺失。为了确保能够成功导入并正常使用该函数,建议按照以下方法操作: #### 安装或升级SciPy 如果当前环境中缺少 SciPy 或者版本较低,则可能导致无法找到模块的情况发生。可以通过安装最新版的 SciPy 来解决问题: ```bash pip install --upgrade scipy -i https://pypi.tuna.tsinghua.edu.cn/simple/ ``` 对于某些特定情况下可能需要指定最低支持此功能的版本号来保证兼容性, 一般推荐至少为 v1.4.0 及以上。 #### 验证安装情况 完成上述命令之后可以进入 Python 解释器验证是否已经正常加载所需库文件: ```python import scipy print(scipy.__version__) ``` 确认输出显示的是大于等于 1.4 的版本信息即可继续下一步骤[^1]。 #### 正确编写代码实现线性指派算法调用 在确保环境配置无误的前提下,现在可以在项目里安全地引入所需的命名空间,并执行相应的逻辑处理: ```python from scipy.optimize import linear_sum_assignment as linear_assignment cost_matrix = [[...], [...]] # 填充实际的成本矩阵数据 row_ind, col_ind = linear_assignment(cost_matrix) for r, c in zip(row_ind, col_ind): print(f'Row {r} assigned to column {c}') ``` 注意,在新版 SciPy 中 `linear_sum_assignment()` 函数返回两个数组——分别对应于行索引和列索引;因此应当准备接收这两个变量而不是单个对象[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值