Why did I get a positive t-value in paired test when most of the new population scored lower? I have a base population with a set of scores, then I put the subjects through training and got a corresponding set of new scores. 
I want to use a paired t-test to see if the training helped/harmed. The null hypothesis is that the training has no impact. Values are listed:  
base = [87.0, 98.0, 100.0, 98.0, 97.0, 67.0, 32.0, 96.0, 94.0, 90.0, 91.0,
        93.0, 81.0, 82.0, 81.0]
new  = [23.0, 71.0,  51.0, 85.0, 84.0, 95.0, 42.0, 65.0, 51.0, 84.0, 92.0,
        20.0, 85.0, 22.0, 89.0]

# new - base = 
diff = [-64.0, -27.0, -49.0, -13.0, -13.0, 28.0, 10.0, -31.0, -43.0, -6.0,
          1.0, -73.0,   4.0, -60.0,   8.0]

You can see that the differences are mostly negative, however if I run a paired t-test through Python scipy.stats.ttest_rel (Documentation):
pair = stats.ttest_rel(base, new)

I get a t-statistic of 2.765 and a p-value of 0.015 (so, p < 0.05).
I was under the impression that the sign of the t-value should match the change. Can someone explain if I'm wrong, or why this happened? 
 A: This is actually an implementation (i.e. a scipy) issue. 
If you look at the examples section of the documentation you link to you can see that in the last example comparing rvs1 with rvs3, even though the values in rvs3 are drawn from a distribution with a mean of 8 (3 higher than rvs1's population mean of 5), the t-statistic is negative.
(with n=500 the chance of random noise flipping the direction is pretty small)
That is, that implementation is looking at the differences, a-b not b-a as you anticipated it was (and as one would reasonably expect in the absence of a specification that it was the other way). I suggest you think of the 'a' argument as standing for 'after' and the 'b' argument as standing for 'before'.
Indeed, here's an obvious check, let's do it in R where you can easily specify the differences to test:
> t.test(new-base)

        One Sample t-test

data:  new - base
t = -2.7652, df = 14, p-value = 0.01518
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
 -38.82704  -4.90629
sample estimates:
mean of x 
-21.86667 

Here t is negative which is what you expected. 
So to get what you want, pass in new and base in the other order.
A: I don't see it labeled in the documentation which vector is meant to go first.  However, in R, y is subtracted from x.  So:  
base = c(87.0, 98.0, 100.0, 98.0, 97.0, 67.0, 32.0, 96.0, 94.0, 90.0, 91.0,
         93.0, 81.0, 82.0, 81.0)
new  = c(23.0, 71.0,  51.0, 85.0, 84.0, 95.0, 42.0, 65.0, 51.0, 84.0, 92.0,
         20.0, 85.0, 22.0, 89.0)
new - base
# [1] -64 -27 -49 -13 -13  28  10 -31 -43  -6   1 -73   4 -60   8
t.test(new, base, paired=T)
#         Paired t-test
# 
# data:  new and base
# t = -2.7652, df = 14, p-value = 0.01518
# alternative hypothesis: true difference in means is not equal to 0
# 95 percent confidence interval:
#  -38.82704  -4.90629
# sample estimates:
# mean of the differences 
#               -21.86667 

There is no problem here.  You must simply have the arguments reversed.  
