Python - Усреднение гистограмм - PullRequest
0 голосов
/ 13 мая 2018

У меня есть 4 гистограммы в Python, однако я хочу создать 5-ю гистограмму, которая является средним значением первых четырех гистограмм (сложить частоты для каждого бина и разделить на 4). Есть ли способ сделать это?

import numpy as np
import random
import matplotlib.pyplot as plt

Elevations1 = np.zeros(100)
Elevations2 = np.zeros(100)
Elevations3 = np.zeros(100)
Elevations4 = np.zeros(100)

for a in np.arange(len(Elevations1)):

    Elevations1[a] = random.randrange(-10000, 10000)
    Elevations2[a] = random.randrange(-10000, 10000)
    Elevations3[a] = random.randrange(-10000, 10000)
    Elevations4[a] = random.randrange(-10000, 10000)

 plt.figure(1)
 plt.hist(Elevations1)
 plt.figure(2)
 plt.hist(Elevations2)
 plt.figure(3)
 plt.hist(Elevations3)
 plt.figure(4)
 plt.hist(Elevations4)

1 Ответ

0 голосов
/ 13 мая 2018

Вам нужно получить частоты объединенной гистограммы, а затем нормализовать их на 4, чтобы получить среднее значение. Вы можете сделать следующее:


import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import random

random.seed(0)

Elevations1 = np.zeros(100)
Elevations2 = np.zeros(100)
Elevations3 = np.zeros(100)
Elevations4 = np.zeros(100)

for a in np.arange(len(Elevations1)):

    Elevations1[a] = random.randrange(-10000, 10000)
    Elevations2[a] = random.randrange(-10000, 10000)
    Elevations3[a] = random.randrange(-10000, 10000)
    Elevations4[a] = random.randrange(-10000, 10000)

df1 = pd.DataFrame(Elevations1)
df2 = pd.DataFrame(Elevations2)
df3 = pd.DataFrame(Elevations3)
df4 = pd.DataFrame(Elevations4)

df_merged = pd.concat([df1, df2, df3, df4], ignore_index=True)

# Get the frequencies of the combined histogram
hist, bins = np.histogram(df_merged)
# Normalize by 4
hist_norm = hist / 4.0


width = 0.9 * (bins[1] - bins[0])
center = (bins[:-1] + bins[1:]) / 2

# plot the Un-normalited frequencies
plt.bar(center, hist, align='center', width=width)
plt.title('Non- Normalized Histogram')
plt.show()

# plot the normalized frequencies
plt.bar(center, hist_norm, align='center', width=width)
plt.title('Normalized Histogram')
plt.show()

1

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...