Я недавно ответил на аналогичный вопрос вчера с похожим выводом. Я не уверен, что это был ты, кто отправил это снова. Тем не менее, было несколько ошибок в определении переменной в вашем коде. Ниже приводится рабочая версия с выводом. Измененные / добавленные строки отмечены комментарием #
repeat = 50
samplesize = 14
samplesize_list = [2, 5, 7]
std_list = [10, 20, 30]
mean_list = [1000, 2000, 3000]
repeat_median = np.empty(repeat, dtype = float)
for j in range(len(samplesize_list)):
size = samplesize_list[j]
for z in range(len(std_list)):
std = std_list[z] # modified, you used the same name as variable
for m in range(len(mean_list)):
mean = mean_list[m] # modified, you used the same name as variable
for i in range(repeat):
sample_data = np.random.normal(mean, std, size)
repeat_median[i] = np.median(sample_data)
plt.subplot(len(samplesize_list), 1, j+1)
sns.distplot(repeat_median, color = 'blue', label='Size %d'%samplesize_list[j]) # added legend
plt.legend(loc = "upper right")
plt.tight_layout() # added for better subplot adjustment
выход
Менее подробный способ написания кода с использованием списочных представлений
for j, size in enumerate(samplesize_list):
for z, std in enumerate(std_list):
for m, mean in enumerate(mean_list):
for i in range(repeat):
sample_data = np.random.normal(mean, std, size)
repeat_median[i] = np.median(sample_data)