Python 将数组拆分为两部分
给出的行向量可能类似于以下任意一种Python 将数组拆分为两部分,python,numpy,vector,Python,Numpy,Vector,给出的行向量可能类似于以下任意一种 [10, 10, 10, 11, 10, 9, 0, 0, 1, 0] [200, 199, 200, 199, 198, 201, 201, 0, 1, 1] [99, 100, 98, 99, 100, 100, 100, 140, 139, 141] 关键是一边比另一边大得多。使用python,是否有一种干净的方法可以找到拆分发生的位置?是。遍历列表。进行运行统计分析;考虑到这些例子,标准偏差应该足够大。当您发现一个严重的异常值
[10, 10, 10, 11, 10, 9, 0, 0, 1, 0]
[200, 199, 200, 199, 198, 201, 201, 0, 1, 1]
[99, 100, 98, 99, 100, 100, 100, 140, 139, 141]
关键是一边比另一边大得多。使用python,是否有一种干净的方法可以找到拆分发生的位置?是。遍历列表。进行运行统计分析;考虑到这些例子,标准偏差应该足够大。当您发现一个严重的异常值时,将列表划分到那里。您的所有分割都远远超出了异常值的典型3西格玛标准
这能让你继续吗?一个简单的方法是检查条目是否大于或小于数组的平均值。这段代码提供了一个函数,用于查找示例中发生拆分的索引。它在统计上不可靠,但在您提到的标准情况下会起作用
import numpy as np
def cut(arr):
m = np.mean(np.array(arr))
arr = arr - m
arr = arr > 0
return np.sum(arr)
cut([10,10,10,11,10,9,0,0,1,0])
return6
,cut([10,10,10,11,10,9,0,0,0,1,0])
返回7
和cut([99,100,98,99,100,100,100,140,139,141])
返回3
,这是“组”的第一个或最后一个元素的索引包含最小的值。能否请您澄清您希望以什么为基础拆分数组?