You can adapt @Joe Kington's suggestion and use scipy.ndimage.zoom
which for your case of a cubic interpolation fits perfectly:
import matplotlib.pyplot as plt
import numpy as np
from scipy.ndimage import zoom
from mpl_toolkits.mplot3d import axes3d
# Receive standard Matplotlib data for 3d plot
X, Y, Z = axes3d.get_test_data(1) # '1' is a step requested data
#Calculate smooth data
pw = 10 #power of the smooth
Xsm = zoom(X, pw)
Ysm = zoom(Y, pw)
Zsm = zoom(Z, pw)
# Create blank plot
fig = plt.figure()
#Create subplots
ax1 = fig.add_subplot(211)
ax2 = fig.add_subplot(212)
# Plotting
ax1.contour(X, Y, Z)
ax2.contour(Xsm, Ysm, Zsm)
plt.show()
Which gives: