NonnegMFPy solves nonnegative matrix factorization (NMF) given a dataset with heteroscedastic uncertainties and missing data with a vectorized multiplicative update rule; this can be used create a mask and iterate the process to exclude certain new data by updating the mask. The code can work on multi-dimensional data, such as images, if the data are first flattened to 1D.