我有两个带有十个坐标值的列表X
和y
我还有两个额外的点异常值列表:异常值_x和异常值_y
我想检查我的X和Y列表,将它们的坐标与异常值进行比较,并创建新的2个列表(X_new和Y_new),其中包括没有异常值的点
在我堆叠的地方有我的嵌套循环。它只记录第一个点,模拟人生不会移动到下一个点。你能帮我修一下吗
X = dataset.iloc[:, 1].values
X = X.reshape(len(X),1)
y = dataset.iloc[:, 2].values
X_new = []
y_new = []
i = 0
n = 0
while i < len(X):
while n < len(outlier_x):
if (X[i] == outlier_x[n] and y[i] == outlier_y[n]):
continue
X_new.append(X[i])
y_new.append(y[i])
n+=
i+=1
这是我的数据集:
x y
0 0.0 0.998440
1 1.0 2.188544
2 4.0 7.572174
3 7.0 6.138442
4 11.0 11.737930
5 0.0 1.043314
6 1.0 1.733181
7 4.0 7.424136
8 7.0 6.138442
9 11.0 9.737930
这些点以前被确定为异常值:
x y
0 4.0 7.572174
1 7.0 6.138442
2 11.0 11.737930
3 4.0 7.424136
4 7.0 6.138442
以下是基于@sin triba答案的工作解决方案:
解决方案
台阶
从以下两个数据帧开始:
我们可以使用
np.isin()
函数检查data
中的任何行是否有与outliers
中的任何行匹配的值:因为我们需要完全匹配(x坐标和y坐标),所以沿第一个轴(跨列)使用
all()
:这个布尔掩码告诉我们哪些行与异常值完全匹配。我们需要做的就是反转掩码(因为我们想要过滤异常值),并使用该掩码索引到
data
:从那里,您可以使用
x
和y
列执行任何您喜欢的操作替代解决方案,从1D阵列开始
如果您有单独的1D数组
X
和y
,并且离群值也是如此,您可以将它们压缩到元组中,并将它们添加到集合中,然后从集合中减去离群值:<
{相关问题 更多 >
编程相关推荐