<br><br><div class="gmail_quote">On Wed, Dec 22, 2010 at 2:51 PM, Robert Kern <span dir="ltr">&lt;<a href="mailto:robert.kern@gmail.com">robert.kern@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im">On Wed, Dec 22, 2010 at 16:47, Paul Anton Letnes<br>
&lt;<a href="mailto:paul.anton.letnes@gmail.com">paul.anton.letnes@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt; On 22. des. 2010, at 21.18, otrov wrote:<br>
&gt;<br>
&gt;&gt;&gt;&gt; The problem:<br>
&gt;&gt;<br>
&gt;&gt;&gt;&gt; I have 2D data sets (scipy/numpy arrays) of 10^7 to 10^8 rows, which consists of repeated sequences of one unique sequence, usually ~10^5 rows, but may differ in scale. Period is same for both columns, so there is not really difference if we consider 2D or 1D array.<br>

&gt;&gt;&gt;&gt; I want to track this data block.<br>
&gt;&gt;<br>
&gt;&gt;&gt; for i in range(1, len(X)-1):<br>
&gt;&gt;&gt;    if (X[i:] == X[:-i]).all():<br>
&gt;&gt;&gt;        break<br>
&gt;&gt;<br>
&gt;&gt; Just look at that python beauty! Such a great language when in hand of a smart user.<br>
&gt;&gt; Thanks for you snippet, but unfortunately it takes forever to finish the task<br>
&gt;<br>
&gt; You could also check one element at a time. I think it will be faster, because it will break if comparison of the first element doesn&#39;t hold. Then, if you find such an occurrence, use Robert&#39;s method to double check that you found the true repetition period.<br>

<br>
</div>Excellent point.<br>
<div class="im"><br></div></blockquote><div><br>Why not do an FFT and look at the shape around the carrier frequency? The DC level should probably be subtracted first. It shoud also be possible to construct a Weiner filter to extract the sequences if they don&#39;t occur with strict periods.<br>
<br>Chuck <br></div><br></div>