如何对numpy数组中的相似值进行分组/四舍五入/量化



是否有一个numpy方法,让我恢复numpy数组的量化结构,如果我事先不知道量化值/水平是什么,但确实知道,例如,它们是间隔的>1.0分开?

例如:

import numpy as np
x = np.array([0.5, 0.5, 1.75, 1.75, 1.75,6.45,6.45,0.5, 11.1, 0.5, 6.45])
x_noise = x + np.random.randn(len(x))/100

是否有一种方法来解决x只给定x_noise?

如果你对原始量化值一无所知,我认为你能做的最好的事情就是对噪声进行平均:

sort_idx = np.argsort(x_noise)
# group values that are less than 1.0 apart
splits = np.where(np.diff(x_noise[sort_idx]) > 1.0)[0] + 1
groups = np.split(x_noise[sort_idx], splits)
# reconstruct x with the average values
x_approx = np.empty_like(x_noise)
for idx, group in zip(np.split(sort_idx, splits), groups):
x_approx[idx] = np.mean(group)

最新更新