如何根据给定的轴来平滑3D数据集?

问题描述 投票:0回答:1

我有一个3D数据集。X1和X2是有争议的变量,X3(结果变量)是二进制的。数据如图所示。我想对数据进行平滑处理(一种局部平均法)。三维数据点 在X3轴上。我的意思是,对于给定的X1和X2,X3变量不是二进制,而应该是0和1之间的数字。例如,当X1=1100,X2=3.5时,X3应该是0和1之间的值。 我很感激你的帮助。

python matplotlib 3d kernel smoothing
1个回答
0
投票

你的问题超级不清楚。你是想让第三个变量在0和1之间有一个随机分布,还是想让第三个变量在变量1和2的基础上遵循一些曲线?总之,这里有一个生成一些随机数据的例子,在0和1之间。

import numpy as np 

X1 = <some data>
X2 = <some data>
X3 = np.random.random(100)

EDIT:

现在我明白了,你想对重复的数据进行平均。你可以直接在你的数据上循环。像这样。

repeats = {}
for n,(x,y) in enumerate(zip(X1,X2)):
    repeats[(x,y)] = repeats.get((x,y),[]) + [X3[n]]
repeats = {k:sum(v)/len(v) for k,v in repeats.items()}

当然,如果你想让你的代码更高效更快速,你可以使用numpy。

© www.soinside.com 2019 - 2024. All rights reserved.