我有四个时间序列信号在不同时间打开,之后在不同时间关闭。 时间= [(0,23),(5,15),(9,20),(12,25)]
例如,channel0在时间0开启,在23秒关闭。通道2在时间= 5秒时打开,在15时关闭。
我想根据以下时间网格中的内容对每个数组进行细分: [(0,4),(5,8),(9,11),(12,14),(15,19),(20,22),(23,24)] 如果信号尚未开始或信号结束,我希望我的列表包含一个空插槽。
最终,我想生成一个类似于Signals0,Signals1,Signal2,Signals3的列表。 时间网格将是
以下是描述我的问题的最小示例:
import numpy as np
Signals=[np.random.normal(0,1,23),np.random.normal(0,1,10),np.random.normal(0,1,11),np.random.normal(0,1,13)]
np.set_printoptions(precision=3)
print Signals
time = [(0,23),(5,15),(9,20),(12,25)]
print time
Signals0=[[-0.585, 0.005, -0.932, -0.322, -0.527],
[0.246, 1.95 , -0.673,0.389]
[0.285,0.245, 1.226],
[0.41,-0.184, 1.642],
[0.463,0.813, 0.021, 0.531, -0.59],
[0.694, -0.528, 0.924],
[]
]
Signals1 = [[],
[ 0.74 , -0.692, -0.302, 0.558],
[0.475, -1.605, 0.438],
[ -1.106,-0.02 , 0.042],
[],
[],
[]
]
Signals2 = [[],
[],
[1.435, 0.855, -2.098],
[0.532, -0.596, 1.415],
[0.727, 0.617,-1.88 , -1.203, -0.918],
[],
[]
]
Signals3 = [[],
[],
[],
[2.462, -1.198, -0.098],
[-2.152, 1.081, -0.519, 0.675, -0.077],
[1.491, 0.071, -0.267, 1.243],
[-1.507]
]
这就是我的频道的样子
[array([-0.585, 0.005, -0.932, -0.322, -0.527, 0.246, 1.95 , -0.673,
0.389, 0.285, 0.245, 1.226, 0.41 , -0.184, 1.642, 0.463,
0.813, 0.021, 0.531, -0.59 , 0.694, -0.528, 0.924]), array([ 0.74 , -0.692, -0.302, 0.558, 0.475, -1.605, 0.438, -1.106,
-0.02 , 0.042]), array([ 1.435, 0.855, -2.098, 0.532, -0.596, 1.415, 0.727, 0.617,
-1.88 , -1.203, -0.918]), array([ 2.462, -1.198, -0.098, -2.152, 1.081, -0.519, 0.675, -0.077,
1.491, 0.071, -0.267, 1.243, -1.507])]
答案 0 :(得分:1)
首先不要使用大写字母来表示变量名signals
而不是Signals
。
all_signals = [[s[slice(max(0,lg-lt),max(0,ug-lt+1))] for (lg,ug) in grid] for (lt,ut),s in zip(time, signals)]
for i,s in enumerate(all_signals):
print "\nsignal",i
for g in s:
print g
给出:
signal 0
[-0.585 0.005 -0.932 -0.322 -0.527]
[ 0.246 1.95 -0.673 0.389]
[ 0.285 0.245 1.226]
[ 0.41 -0.184 1.642]
[ 0.463 0.813 0.021 0.531 -0.59 ]
[ 0.694 -0.528 0.924]
[]
signal 1
[]
[ 0.74 -0.692 -0.302 0.558]
[ 0.475 -1.605 0.438]
[-1.106 -0.02 0.042]
[]
[]
[]
signal 2
[]
[]
[ 1.435 0.855 -2.098]
[ 0.532 -0.596 1.415]
[ 0.727 0.617 -1.88 -1.203 -0.918]
[]
[]
signal 3
[]
[]
[]
[ 2.462 -1.198 -0.098]
[-2.152 1.081 -0.519 0.675 -0.077]
[ 1.491 0.071 -0.267]
[ 1.243 -1.507]