Свен показав, як користуватися класом gaussian_kdeвід Scipy, але ви помітите, що він не схожий на те, що ви створили з R. Це тому, що gaussian_kdeнамагається автоматично провести смугу пропускання. Ви можете грати з пропускною спроможністю таким чином, змінюючи функцію covariance_factorз gaussian_kdeкласу. По-перше, ось що ви отримуєте, не змінюючи цю функцію:

Однак якщо я використовую такий код:
import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import gaussian_kde
data = [1.5]*7 + [2.5]*2 + [3.5]*8 + [4.5]*3 + [5.5]*1 + [6.5]*8
density = gaussian_kde(data)
xs = np.linspace(0,8,200)
density.covariance_factor = lambda : .25
density._compute_covariance()
plt.plot(xs,density(xs))
plt.show()
я отримав

що досить близько до того, що ви отримуєте від Р. Що я зробив? gaussian_kdeвикористовує змінну функцію covariance_factorдля обчислення її пропускної здатності. Перед зміною функції значення, повернене коваріацією_фактор для цих даних, становило близько .5. Понизивши це, зменшилася пропускна здатність. Мені довелося зателефонувати _compute_covarianceпісля зміни цієї функції, щоб усі фактори були обчислені правильно. Це не точне відповідність параметру bw від R, але, сподіваємось, це допоможе вам дістатись у правильному напрямку.
seabornstackoverflow.com/a/32803224/1922302