Interpreting (and comparing) output from numpy.correlate
<p>I have looked at <a href="https://stackoverflow.com/questions/13439718/how-to-interpret-numpy-correlate-and-numpy-corrcoef-values">this question</a> but it hasn't really given me any answers.</p>

<p>Essentially, how can I determine if a strong correlation exists or not using <code>np.correlate</code>? I expect the same output as I get from matlab's <code>xcorr</code> with the <code>coeff</code> option which I can understand (1 is a strong correlation at lag <code>l</code> and 0 is no correlation at lag <code>l</code>), but <code>np.correlate</code> produces values greater than 1, even when the input vectors have been normalised between 0 and 1.</p>

<p>Example input</p>

<pre><code>import numpy as np
x = np.random.rand(10)
y = np.random.rand(10)

np.correlate(x, y, 'full')
</code></pre>

<p>This gives the following output:</p>

<pre><code>array([ 0.15711279,  0.24562736,  0.48078652,  0.69477838,  1.07376669,
    1.28020871,  1.39717118,  1.78545567,  1.85084435,  1.89776181,
    1.92940874,  2.05102884,  1.35671247,  1.54329503,  0.8892999 ,
    0.67574802,  0.90464743,  0.20475408,  0.33001517])
</code></pre>

<p>How can I tell what is a strong correlation and what is weak if I don't know the maximum possible correlation value is?</p>

<p>Another example:</p>

<pre><code>In [10]: x = [0,1,2,1,0,0]

In [11]: y = [0,0,1,2,1,0]

In [12]: np.correlate(x, y, 'full')
Out[12]: array([0, 0, 1, 4, 6, 4, 1, 0, 0, 0, 0])
</code></pre>

<p><strong>Edit:</strong> This was a badly asked question, but the marked answer does answer what was asked. I think it is important to note what I have found whilst digging around in this area, you cannot compare outputs from cross-correlation. In other words, it would not be valid to use the outputs from cross-correlation to say signal <em>x</em> is better correlated to signal <em>y</em> than signal <em>z</em>. Cross-correlation does not provide this kind of information</p>