我正在使用numpy/pandas执行SPC分析。
其中一部分是根据Nelson rules和Western Electric rules检查数据系列。
例如(纳尔逊规则第2条):检查一行中是否有9个(或更多)点位于平均值的同一侧。
现在,我可以简单地通过迭代数组来实现对这样的规则的检查。
- 但是在我这么做之前,我在这里检查一下,如果numpy/panda有办法不经过迭代就可以做到这一点?
- 在任何情况下:实现上述检查的"numpy-ic"方法是什么?
我正在使用numpy/pandas执行SPC分析。
其中一部分是根据Nelson rules和Western Electric rules检查数据系列。
例如(纳尔逊规则第2条):检查一行中是否有9个(或更多)点位于平均值的同一侧。
现在,我可以简单地通过迭代数组来实现对这样的规则的检查。
4条答案
按热度按时间4szc88ey1#
如果Np.max(d)== 9或Np.min(d)== -9,则一行中有九个(或更多)点在平均值的同一侧。
或者您可以使用以下代码来计算每行的长度:
wnrlj8wa2#
正如我在评论中提到的,你可能想尝试使用一些跨步技巧。
np.int8
以保存空间N
个连续点,可以使用这就给出了一个
(x.size, N)
rollin数组:第一行是x[0:N]
,第二行是x[1:N+1]
...当然,最后的N-1
行将没有意义,因此从现在开始我们将使用这就给出了一个大小为
(x.size-N+1)
的数组,其值介于-N
和+N
之间:我们只需要找到绝对值N
的位置:indices
是数组x
的索引i
的数组,其值x[i:i+N]
位于均值的同一侧...使用
x=np.random.rand(10)
和N=3
的示例6yoyoihd3#
给定
data
和最小值length
,您可以检查数组是否包含零。
zxlwwiss4#
另一种可能性:使用相关或卷积
它会比HYRY cumsum版本慢。
旁白:statmodels中有一个runstest用于测试类似的运行