擅长:python、mysql、java
<p>我们可以使用一些<code>numpy</code>来利用一些数组操作。你知道吗</p>
<pre><code>import numpy as np
myDict = {1: 10, 1.1: 10, 1.7: 6, 2: 15, 2.1: 20, 2.3: 50, 2.6: 1, 3: 1}
x = np.array([*myDict]) # just the keys from the dictionary
print(x)
array([1. , 1.1, 1.7, 2. , 2.1, 2.3, 2.6, 3. ])
clusters = x[x == x.astype(int)] # just the integers to get the bins
print(clusters)
array([1., 2., 3.])
digits = np.digitize(x, clusters) # bin the data based on the bins
print(digits)
array([1, 1, 1, 2, 2, 2, 2, 3])
res = dict()
for c in clusters:
keys = x[digits == c] # grab all keys for this bin
value = sum([myDict.get(k) for k in keys]) # sum values for these keys from the original dict
res[keys.mean().round(2)] = value
print(res)
{1.27: 26, 2.25: 86, 3.0: 1}
</code></pre>