Tres píxeles siempre están oscuros
mean, std = D.mean(axis=0), D.std(axis=0)
print((std == 0).sum()) # 3
Tres píxeles siempre están oscuros en las 1797 imágenes de dígitos. Están en esquinas donde nadie escribe. Su desviación estándar es exactamente cero, así que (D - mean) / std divide por cero y produce NaN.
La corrección mantiene el hallazgo visible en vez de ocultarlo:
Z = (D - mean) / np.where(std == 0, 1.0, std)