Could not find a shorter way, than this one

    import numpy as np
    from scipy.cluster.vq import vq

    X = np.array([[ 2.,  4.,  2.],
                  [ 1.,  3.,  1.],
                  [ 3.,  4.,  2.],
                  [ 2.,  3.,  2.],
                  [ 1.,  5.,  5.]])

    codebook = np.array([[ 1.  ,  3.  ,  1.  ],
                         [ 2.33,  3.67,  2.  ],
                         [ 1.  ,  5.  ,  5.  ]])

    partition, euc_distance_to_centroids = vq(X, codebook)

    TSS = np.sum((X-X.mean(0))**2)
    SSW = np.sum(euc_distance_to_centroids**2)
    SSB = TSS - SSW

    # The 'direct' way
    B = []
    c = X.mean(0)
    for i in range(partition.max()+1):
        ci = X[partition == i].mean(0)
        B.append(np.bincount(partition)[i]*np.sum((ci - c)**2))
    SSB_ = np.sum(B)

    print(TSS, SSW, SSB, SSB_)
prints

    14.8 1.3334 13.4666 13.4666666667