Given two vectors, v1 and v2, how does mean-centering affect their relative orientation (angle)?

Below I use Python to define two vectors, mean-center them, and then compare their dot products:

a, b, c, d = np.random.randn(4)
v1 = np.array([a, b])
v2 = np.array([c, d])

v1_mean_centered = v1 - np.mean(v1)
v2_mean_centered = v2 - np.mean(v2)

# dot product before mean centering
v_before = v1 @ v2 / (np.linalg.norm(v1) * np.linalg.norm(v2))

# dot product after mean centering
v_after = v1_mean_centered @ v2_mean_centered / (np.linalg.norm(v1_mean_centered) * np.linalg.norm(v2_mean_centered))

v_before, v_after

v_before takes on random values, as we expect, but v_after is either 1 or -1. I do not understand why? Second, v_ater takes those values only for 2D vectors.

So my questions are:

  1. Why is v_after either 1 or -1, and why does this happen only for 2D vectors?
  2. I thought that mean-centering does not affect the angle, in which case either my code or reasoning is faulty.

Here's a worked out example showing how I'm doing the calculations:

v1 = [1 3]
v2 = [4 1]

v1_mean = 2.0
v2_mean = 2.5

v_dot_product = v1^T * v2 / (|v1||v2|) = 7 / 13.038 = 0.5368

v1_mean_centered = v1 - 2.0 = [-1 1]
v2_mean_centered = v2 - 2.5 = [1.5 -1.5]

v_mean_centered_dot_product = -3.0 / 3.0 = -1.0 

v_dot_product != v_mean_centered_dot_product 

Does this mean that mean-centering alters the (relative) vector direction?

  • $\begingroup$ Can you give a formula for the result of "mean-centering" two vectors $v,w$ in $\mathbb R^2$? $\endgroup$
    – coffeemath
    Commented Feb 23, 2023 at 23:39
  • $\begingroup$ I added an example to show how the calculation is carried out. I guess I understand why the values would be -1 or 1, given that the mean is between two entries, but I'm still confused about how to interpret mean-centering (assuming the calculations are correct). $\endgroup$
    – besi
    Commented Feb 23, 2023 at 23:51

1 Answer 1


If $v \in \mathbb R^2$ is any vector, and $v'$ is the result of mean-centering $v$, then we always have $v' = [-a \quad a]$ for some $a$. The reason for this is that after mean-centering, the mean of any set of data is always $0$ (that's the whole point of mean-centering a set of data!). So you are always finding the angle between two vectors of the form $[-a \quad a]$ and $[-b \quad b]$. If $a$ and $b$ have the same sign, these vectors point in the same direction; if they have opposite signs, the vectors point in opposite directions.

I'll add a quick interpretation of this fact: Suppose $(x_1, y_1), (x_2, y_2), \dots (x_N, y_N)$ is a set of $N$ pairs of numerical data. Form the two vectors $v = [x_1, x_2, \dots x_N]$ and $w = [y_1, y_2, \dots y_N]$, both in $\mathbb R^N$, and then form the mean-centered vectors $v'$ and $w'$. If $\theta$ is the angle between $v'$ and $w'$, then $\cos \theta$ is precisely the correlation coefficient for the set of data. The fact that in the case $N = 2$ we always have $\cos \theta = \pm 1$ corresponds to the fact that given any two data points (with $x_1 \ne x_2$) there is always a line that perfectly interpolates between them, so the correlation coefficient is always either exactly $1$ or exactly $-1$. This is, it should be clear, only the case if $N = 2$.

  • $\begingroup$ Does this hold for higher dimensions? Specifically, does mean-centering alter the angle between the vectors? $\endgroup$
    – besi
    Commented Feb 24, 2023 at 0:03
  • $\begingroup$ It's crucial in the argument above that there we are in $\mathbb R^2$. $\endgroup$
    – mweiss
    Commented Feb 24, 2023 at 17:45

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .