Error: un NaN significa que el código está roto
«La estandarización produjo NaN, así que hay un error en la fórmula.»
D = np.array([[0., 1., 5.], [0., 3., 9.], [0., 2., 7.]])
std = D.std(axis=0)
assert std[0] == 0.0
Z = (D - D.mean(axis=0)) / std
assert np.isnan(Z[:, 0]).all()
assert np.isfinite(Z[:, 1:]).all()
La columna 0 nunca varía, así que la fórmula dividió por cero; todas las demás columnas son finitas. El código es correcto y reportó una propiedad de los datos. Una característica sin varianza es un hallazgo, no un error: descártala o consérvala, pero di cuál.