2013-03-17 2 views
0

Nx3 배열에서 크기가 3x3 인 블록을 추출하려고합니다.perl Nx3 Array에서 행 추출하기

foreach (@TotalData){ 
     print "@{$_}\n"; 
    } 

은 (예를 들어) 저를 제공합니다 : 점은 다른 항목을 나타냅니다

. 
    . 
    0.000 22.00 3.791140e+000 
    0.100 22.00 2.737532e+000 
    0.200 22.00 2.393466e+000 
    . 
    . 

. 이 3x3 블록을 자체 배열에 배치하려고합니다. 어떻게 추출 할 수 있습니까?

+0

뭔가를 직접 작성 시도하고 그것이 작동하지 않는 경우 다음, 당신을 따라 도움을 주신 가져 가십시오. 시작하면 도움이됩니다. 우리는 당신을 위해 그것을 쓰지 않습니다. 시도한 실제 코드를 보여 주시면 거기에서 도움을 드릴 수 있습니다. –

+0

예 : foreach (@TotalData) { push @BlockArray, \ @ {$ _}; } 줄 단위로 복사하는 것이 좋겠지 만 BlockArray를 인쇄하면 빈 상태가됩니다. –

+0

의견을 요약 할뿐 아니라 전체 프로그램을 살펴 봅니다. –

답변

2

블록으로 무엇을 하시겠습니까? 어쩌면 단지 @TotalData 슬라이스 (예 : @TotalData[4,5,6] 또는 splice(@TotalData, 4, 3))를 원할 수도 있습니다. 한 번에 3 번 반복 할 수 있습니다 (예 : List::MoreUtils::natatime). 당신은 정말로 충분한 정보를 말하지 않았습니다. 당신이 부작용으로 @TotalData을 삭제 괜찮다면

:에

while (my @block = splice(@TotalData, 0, 3)) { 
    # do something with @block (which will have 3 elements, 
    # except on the last iteration, where it will have 1-3) 
} 

단지 3의 완전한 블록을 얻을 :

while (3 == (my @block = splice(@TotalData, 0, 3))) { 
    # do something with @block (which will have 3 elements) 
} 
+0

각 블록을 가져 와서 자신의 파일로 인쇄하고 싶습니다. 그런 다음 gnuplot을 사용하여 x 축을 첫 번째 열, 중간 열을 곡선 레이블로 사용하여 동일한 플롯에서 가장 오른쪽 열의 몇 가지 다른 집합을 그릴 것입니다. –

1

내가 PDL가 메소드가 오히려 확신 이러는거야. 사실, 거의 동일한 문제가 PDL 문서의 Conway's Game of Life example에서 조사됩니다.

1

List::MoreUtils::natatime을 찾고 계십니까?

#!/usr/bin/env perl 

use strict; 
use warnings; 

use List::MoreUtils qw(natatime); 

my @data = (
    [1 .. 3], 
    [4 .. 6], 
    [7 .. 9], 
    ['a' .. 'c'], 
    ['d' .. 'f'], 
    ['g' .. 'i'], 
); 

my $it = natatime(3, @data); 

while (my @set = $it->()) { 
    for my $r (@set) { 
     print "@$r\n"; 
    } 
    print '-' x 30, "\n"; 
} 

출력 :

~/tmp> ./jj.pl 
1 2 3 
4 5 6 
7 8 9 
------------------------------ 
a b c 
d e f 
g h i 
------------------------------
+0

실제로 내 것은 아마도 과잉 공격 일 것입니다. Nx3에서 3x3을 가져 가기 위해 'natatime'을 좋아합니다. M과 N이 모두 3보다 큰 NxM에서 3x3을 모두 가져 가고 싶을 때 광산을 봅니다. –

+0

그 방법에서 얻은 것은 : ----------------- ------------ ----------------------------- –

+0

컴퓨터는 결정적인 사항입니다 .¹. 게시 한 스크립트를 복사하여 붙여 넣은 경우 위에 표시된 결과를 얻으실 수 있습니다. 다른 코드를 실행 한 경우 오류 코드를 표시해야합니다. ** ¹ ** [Quantum :: Superpositions] (http://search.cpan.org/perldoc/Quantum::Superpositions)에도 불구하고. –

관련 문제