Из ваших комментариев кажется, что вы уже знаете, что делает код, и просто хотите получить некоторую уверенность в том, что вы вызываете метод numpy
с правильными параметрами.Я думаю, что в вашем текущем коде есть одна проблема: вы объединяете все ваши популяции в одну выходную выборку.
Чтобы проиллюстрировать это, я увеличил размеры популяции до 5000 для построения графиков.Если вы не очищаете список sample
на каждой итерации, вы просто продолжаете добавлять к нему:
import numpy as np
import matplotlib.pyplot as plt
sub_pop = [5000, 5000, 5000]
std_list = [3000, 5000, 8000]
mean_list = [10000, 15000, 30000]
sample = []
for i in range(len(sub_pop)):
sample += np.random.normal(mean_list[i],std_list[i], sub_pop[i]).tolist()
sample1 = [abs(x) for x in sample]
plt.hist(sample, bins=500)
#plt.show()
plt.savefig('all_merged.png')
, что дает:
ВместоЯ думаю, вы, вероятно, хотите три отдельных населения.Если вам не нужны отдельные группы населения, по крайней мере, это служит разъяснением того, получаете ли вы ожидаемый результат:)
import numpy as np
import matplotlib.pyplot as plt
sub_pop = [5000, 5000, 5000]
std_list = [3000, 5000, 8000]
mean_list = [10000, 15000, 30000]
sample = []
for i in range(len(sub_pop)):
sample += np.random.normal(mean_list[i],std_list[i], sub_pop[i]).tolist()
sample1 = [abs(x) for x in sample]
plt.hist(sample, bins=500)
sample = [] # Clear the sample list
#plt.show()
plt.savefig('separated.png')