Como posso subamostrar uma matriz de acordo com sua densidade? (Remova valores frequentes, mantenha os raros)

Tenho esse problema que quero plotar uma distribuição de dados em que alguns valores ocorram com frequência, enquanto outros são bastante raros. O número de pontos no total é de cerca de 30.000. A renderização de um gráfico como png ou (Deus não permita) pdf leva uma eternidade e o pdf é muito grande para ser exibido.

Então, quero subamostrar os dados apenas para as parcelas. O que eu gostaria de conseguir é remover muitos pontos onde eles se sobrepõem (onde a densidade é alta), mas mantenha aqueles em que a densidade é baixa com quase probabilidade 1.

Agora,numpy.random.choice permite especificar um vetor de probabilidades, que calculei de acordo com o histograma de dados com alguns ajustes. Mas parece que não consigo escolher, para que os pontos raros sejam realmente mantido

Anexei uma imagem dos dados; a cauda direita da distribuição tem ordens de magnitude menos pontos, então eu gostaria de mantê-las. Os dados são 3d, mas a densidade vem de apenas uma dimensão, para que eu possa usá-lo como uma medida de quantos pontos existem em um determinado local

questionAnswers(2)

yourAnswerToTheQuestion