levels = np.linspace(1,3,11)[1:-1]

# 方法1: 先にカラーマップに対してset_underset_overを行う
cmap = copy.deepcopy(plt.cm.Spectral)
cmap.set_under('silver')
cmap.set_over('w')

fig, ax = plt.subplots()
cs = ax.contourf(v, levels, cmap=cmap, extend='both')
fig.colorbar(cs, aspect=40, pad=0.1, orientation='horizontal',
             extendfrac=1./(len(levels)-1))

# 方法2: コンターを描いてから変更を加える
fig, ax = plt.subplots()
cs = ax.contourf(v, levels, cmap=copy.deepcopy(plt.cm.Spectral), extend='both')
cs.cmap.set_under('silver')
cs.cmap.set_over('w')
cs.changed()
fig.colorbar(cs, aspect=40, pad=0.1, orientation='horizontal',
             extendfrac=1./(len(levels)-1))