Wie berechne stndard Abweichung der count-Wert-Paare

In numpy die Funktion zur Berechnung der standard-deviaiton erwartet eine Liste von Werten wie [1, 2, 1, 1] und berechnet die Standardabweichung von diese. In meinem Fall habe ich eine verschachtelte Liste von Werten und zählt wie [[1, 2], [3, 1]], wo die erste Liste enthält die Werte und die zweite enthält die zu zählen, wie oft die entsprechenden Werte angezeigt.

Ich bin auf der Suche nach einer sauberen Möglichkeit, die Berechnung der Standardabweichung für eine gegebene Liste wie oben.

Ich habe bereits eine funktionierende Lösung, das wandelt die verschachtelte count-Wert Liste in einer flachen Liste von Werten und berechnet die Standardabweichung mit der Funktion oben, aber ich finde es nicht angenehm und würde lieber eine andere option haben.

Ein minimales Beispiel für mein workaround ist

import numpy as np

# The usual way
values = [1,2,1,1]
deviation = np.std(values)
print(deviation)

# My workaround for the problem
value_counts = [[1, 2], [3, 1]]
values, counts = value_counts
flattened = []
for value, count in zip(values, counts):
    # append the current value count times
    flattened = flattened + [value]*count
deviation = np.std(flattened)
print(deviation)

Der Ausgang ist

0.4330127018922193
0.4330127018922193

Vielen Dank für irgendwelche Ideen oder Vorschläge :)