我想在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
希望能帮到你。预先感谢您。
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]
结果是一个数组列表。