使用Python按长度拆分列

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

我想在Python中将一列分成多列(垂直方向)。如果我谷歌,我只能找到 split 函数,它在水平方向上分割: |1,2,3| --> |1|2|3|

但是,我想找到一个函数,每次检测到+-三个零时,我可以在垂直方向上分割我的列(np 数组)(我使用一个传感器,每次完成单个测量时将值重置为 0)。并保留这些零中的最后一个,以便每一列都以零值开始。 像这样;

初始栏目: 0 1 4 2 3 4 7 0 6 0 0 0 6 4 6 3 0 0 0 7

应该分成;

第1栏: 0 1 4 2 3 4 7 0 6

第 2 栏: 0 6 4 6 3

第 3 栏: 0 7

我希望它起作用的原因是因为我的图表目前看起来像这样:

我希望现在串联的峰是平行的,就像这样;

希望能帮到你。预先感谢您。

python split row
1个回答
0
投票

Numpy 有一个垂直分割功能。 但您不仅要拆分行,还要删除行。因此,您想要检测何时有 3 个(或更多)个零在彼此之后,在零的开头和结尾之前分开,而不是将零剪掉。

这里实现了:

data = np.array((0, 1, 4, 2, 3, 4, 7, 0, 6, 0, 0, 0, 6, 4, 6, 3, 0, 0, 0, 7))
data = np.vstack(data)

column = data[:,0]
where_to_split = []
start = 0

while start < len(column):
    
    end = 0
    while start+end < len(column):
        if column[start+end] != 0:
            break
        end += 1 

    if end > 2:
        where_to_split.extend([start, start+end-1])
        start += end

    start += 1

result = np.vsplit(data, where_to_split)[::2]

结果是一个数组列表。

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