リストを行列に変換リスト: {"a", 1, 2, "b"} を行列 [. 1 2 .]?
すべての要素をループするだけで済むと思いますが、アプリケーション内でこれを何千回も実行し、各リストには数百の要素が含まれるため、より迅速な方法があることを願っています。
Re: リストを行列に変換ブーヤー!、 勝利を宣言して帰国! 30,000 行、150 列のデータ テーブルでは、すべての行のすべての列をループしてその列の制限をチェックする 8.5 分の実行時間から、一度に行全体をチェックする 4.5 秒の実行時間になりました。 先ほども言いましたが、ブーヤー!
Re: リストを行列に変換ここでのメモリの処理についてはわかりません。 ただし、NumberColBox は描画されたり、変数に格納されたりしないため、大量のメモリを使用したりロックしたりすることはないと思います。
また、直線的にスケールするようです。 10000x 、 100000x 、 1000000x でループした場合、それぞれ 0.27 秒、2.7 秒、26.7 秒かかります。 メモリ使用量に違いはありません。
この小さなリストに適用すると、数値列ボックスは、上で投稿したデータ テーブルのアプローチよりも約 30 倍高速になります。 非常に長いリストの場合は、NumberColBox に保持できる項目数に上限がある可能性があり、データ テーブル方式の方が効率的である可能性があります。
Re: リストを行列に変換完璧を期すために、私はこれを行いました:
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 プロセスに変換します。
Re: リストを行列に変換ほぼ完璧です! 質問です。Number Col ボックスはどうなりますか? それはメモリ内に残るのでしょうか、それともメッセージを送信するのに十分な期間だけ作成されるのでしょうか?
Re: リストを行列に変換これはかなり高速です:
MyList = {"a", 1, 2, "b"};
Mat = Number Col Box("", MyList) << get as matrix;Re: リストを行列に変換実際には欠損値が必要です。 欠損値が問題にならない場合もあります。たとえば、後でデータセットに追加の列を作成するときにテストが追加される場合などです。 以前のデータは、実行されなかったテストの仕様を超えていません。 残念ながら、データの欠落が問題となり、テストが中止される場合がありますが、以前の結果は仕様内です。 対処方法はまだ分かりませんが、少しずつ前進しています。
Re: リストを行列に変換元の質問を見ると、[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);Re: リストを行列に変換ありがとう、試してみます。
Re: リストを行列に変換@MarkDayton 、
データテーブルを使用してもよいかわかりません。 「はい」の場合は、どうぞ。 データ テーブルはプライベートであるため、数百の値に対してはかなり高速であることが期待されます。
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);