如何将嵌套向量构成的矩阵转换为保留嵌套结构的嵌套向量一维向量
APL嵌套矩阵转一维向量保留嵌套结构的方法
问题原因
你使用的,/不是数组展开(ravel)操作,而是按行归约拼接操作,会将每行所有嵌套的数值对直接拼接为扁平数值序列,所以会破坏原有的嵌套结构。
解决方案
方法1:标准ravel操作(最简便)
直接用单个逗号,作为ravel函数,它只会拆解矩阵最外层的二维结构,不会修改每个元素内部的嵌套数值对:
x←⍳10 y←⍳10 mat←x∘.,y vec←,mat ⍝ 生成100元素的一维向量,每个元素仍为长度2的数值对
方法2:带秩限定的ravel(兼容性更强)
如果你的APL环境默认ravel仍会拆解内层嵌套,可以用秩操作符限定ravel仅作用于最外层的二维结构,完全不触碰内层元素:
vec←,⍤2⊢mat
结构验证
你可以执行≡¨vec验证结构,返回的100个结果均为2,即代表每个元素都是长度为2的数值向量,嵌套结构完整保留。
内容的提问来源于stack exchange,提问作者Rudi Angela
相关产品推荐
相关产品推荐

