将列表转换为矩阵将列表:{"a", 1, 2, "b"} 转换为矩阵:[. 1 2 .]?
我希望我可以循环遍历所有元素,但我希望有一种更快的方法,因为我将在我的应用程序中执行此操作数千次,每个列表包含数百个元素。
回复:将列表转换为矩阵哇!, 宣告胜利,回家! 在包含 30,000 行和 150 列的数据表上,我的例程从循环遍历每一行的每一列并检查该列的限制的 8.5 分钟运行时间,到一次检查整行的 4.5 秒运行时间! 正如我所说,嘘!
回复:将列表转换为矩阵不确定这里的内存处理。 但由于 NumberColBox 没有绘制或存储在变量中,我认为它不会使用或锁定大量内存。
它似乎也是线性扩展的:如果循环 10000x、100000x 和 1000000x,则分别需要 0.27、2.7 和 26.7 秒。 内存使用情况没有区别。
应用于这个小列表时,数字 col 框比上面发布的数据表方法快大约 30 倍。 对于很长的列表 - NumberColBox 可以容纳的项目数可能有上限 - 数据表方法可能更有效。
回复:将列表转换为矩阵为了完美,我这样做了:
data = shape(Number Col Box("", dt[1,0]) << get as matrix, 1, N Cols(dt));现在,鉴于 LSL/USL 规格的类似构造矩阵,我可以这样做:
If( max(data < LSL) > 0 | max(data > USL) > 0, "FAIL", "PASS")
根据列属性中指定的限制检查一行数据,而无需循环遍历每一行的列 - 采用 mXn 过程并将其转换为 m+n 过程。
回复:将列表转换为矩阵几乎完美! 问题,数字列框会发生什么情况? 它会保留在内存中,还是只创建足够长的时间来发送消息?
回复:将列表转换为矩阵这相当快:
MyList = {"a", 1, 2, "b"};
Mat = Number Col Box("", MyList) << get as matrix;回复:将列表转换为矩阵实际上我需要缺失的值。 有时,缺失值不是问题,例如稍后在数据集中创建其他列时添加测试。 对于未执行的测试,早期数据并未超出规格。 不幸的是,有时丢失数据是一个问题,测试会中止,但之前的结果符合规范。 我还没有弄清楚如何处理这个问题,但我正在取得进展。
回复:将列表转换为矩阵看看你原来的问题,你想要一个 [1,2] 矩阵。我在声明中添加了删除缺失值的内容
MyList = {"a", 1, 2, "b"} ;
dt = New Table("Temp",
New Column("C",Numeric,values(MyList)),
"Private"
);
dt << select where( ismissing(:c)) << delete rows;
Mat = dt << get as matrix;
Close(dt,"No Save");
Show(Mat);回复:将列表转换为矩阵谢谢,我会尝试一下。
回复:将列表转换为矩阵@马克代顿,
不知道用数据表好不好?如果是的话,就到这里。 由于数据表是私有的,我希望它对于数百个值来说速度会更快
MyList = {"a", 1, 2, "b"} ;
dt = New Table("Temp",
New Column("C",Numeric,values(MyList)),
"Private"
);
Mat = dt << get as matrix;
Close(dt,"No Save");
Show(Mat);