목록을 행렬로 변환{"a", 1, 2, "b"} 목록을 행렬로 변환하는 가장 빠른 방법은 무엇입니까? [. 12.]?
모든 요소를 반복할 수 있을 것으로 기대하지만 각 목록에 수백 개의 요소가 포함된 내 응용 프로그램에서 이 작업을 수천 번 수행할 것이기 때문에 더 빠른 방법이 있기를 바랍니다.
Re: 목록을 행렬로 변환부야!, 승리를 선언하고 집으로! 30,000개의 행과 150개의 열이 있는 내 데이터 테이블에서 내 루틴은 모든 행의 모든 열을 반복하고 해당 열의 제한을 확인하는 8.5분의 런타임에서 한 번에 전체 행을 확인하는 4.5초의 런타임으로 이동했습니다! 내가 말했듯이, BOOYAH!
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 Box는 어떻게 됩니까? 메모리에 남아 있습니까, 아니면 메시지를 보낼 수 있을 만큼만 생성됩니까?
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);