將列表轉換為矩陣將列表:{"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);