行矢量被给予其可能看起来像以下任何分裂阵列分为两个部分
[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-sigma标准。
这会让你走吗?
一个简单的方法是检查一个条目是否大于或小于数组的均值。此代码提供了一个函数,用于查找您的示例中发生拆分的索引。在统计上并不强劲,但会在你提到
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])
回报6
,cut([10, 10, 10, 11, 10, 9, 0, 0, 1, 0])
回报7
和cut([99, 100, 98, 99, 100, 100, 100, 140, 139, 141])
回报3
标准的情况下,这是“组”的第一个或最后一个元素的索引工作包含最小的值。
你能否请说明你想拆分数组的基础? – Meccano