我目前正在使用python和numpy计算两个列表之间的关联:data_0
和data_1
。每个列表包含分别排序的时间t0
和t1
。
我要计算0 < t1 - t0 < t_max
所在的所有事件。你知道吗
for time_0 in np.nditer(data_0):
delta_time = np.subtract(data_1, np.full(data_1.size, time_0))
delta_time = delta_time[delta_time >= 0]
delta_time = delta_time[delta_time < time_max]
这样,当列表被排序时,我选择了一个子数组data_1
,其形式为data_1[index_min: index_max]
。
所以我需要找到两个索引来得到我想要的。你知道吗
有趣的是,当我转到下一个time_0
时,由于data_0
也被排序,我只需要找到新的index_min
/index_max
,比如new_index_min >= index_min
/new_index_max >= index_max
。
意思是我不需要再浏览所有的data_1
。
(从头开始的数据列表)。你知道吗
我实现了这样一个解决方案,没有使用numpy方法(只使用while
循环),它给我的结果和以前一样,但没有以前快(15倍长!)。
我认为通常它需要较少的计算,应该有一种方法可以使用numpy方法使它更快,但我不知道怎么做。
有人有主意吗?你知道吗
我不确定我是否非常清楚,所以如果你有任何问题,请不要客气。你知道吗
先谢谢你
保罗
这里是一个使用
argsort
的矢量化方法。它使用了一种类似于避免完全扫描的策略:它的工作原理是
maximum.reduce
完成的相关问题 更多 >
编程相关推荐