如何将DenseAxisArray转换为常规数组/矩阵?求简便方法
将JuMP的DenseAxisArray转换为常规数组/矩阵的简便方法
当然有更简便且通用的方法,你的当前实现仅适用于特定维度的DenseAxisArray,且依赖固定索引,灵活性不足。这里提供几种更优的方案:
直接使用
Array()构造函数:JuMP的DenseAxisArray实现了类型转换接口,直接调用Array()就能提取其底层的常规数组,支持任意维度:if typeof(a[i]) <: JuMP.Containers.DenseAxisArray a[i] = Array(a[i]) end使用
convert函数:和上述方法效果一致,写法更明确:if typeof(a[i]) <: JuMP.Containers.DenseAxisArray a[i] = convert(Array, a[i]) end直接访问
.data字段:DenseAxisArray的核心数据存储在.data属性中,也可以直接获取:if typeof(a[i]) <: JuMP.Containers.DenseAxisArray a[i] = a[i].data end
这几种方法都比你的列表推导式更通用,不管是一维向量、二维矩阵还是更高维的数组都能正确转换,代码也更简洁。
内容的提问来源于stack exchange,提问作者Annaquest
相关产品推荐
相关产品推荐

