scipy.stats.rv_discrete is what you ned IMHO.
You can supply your probabilities via the values parameter and it's really easy and you will figure it out. Also, you can then use the rvs() method to generate random numbers when needed too.
You can also pass a keyword parameter to numpy.random.choice(),
Consider the following example:
numpy.random.choice(numpy.arange(1, 7), p=[0.35, 0.27, 0.35, 0.43, 0.1, 0.12]