问题:
我有一个多个二进制神经元平行记录的数据集。每当神经元触发时,火的时间被记录到NumPy阵列中,记录的神经元的ID被记录在次级NumPy阵列中。例如,如果0.25,0.31,0.41,0.50是发射时间的数组,0,5,2,1是is数组,那么神经元0在0.25s激发,神经元5在0.31s启动,等等。
预期输出:
不是这样的,我想为每个神经元提供一个数组,每个神经元的激发次数都是这样的。所以,如果神经元0在0.25,1.25,4.0时触发,那么这就是神经元0的数组,每个神经元都会有自己的数组。
我尝试过的:
为每个神经元创建一个数组并在正确的数组中循环并附加到正确的数组的蛮力方法将有效,但是附加是缓慢的。
一个比执行单个元素循环更好的方法是使用.where()获取每个ID的位置,然后索引到时间数组中:
individual_times = []
for i in range(minindex, maxindex+1):
i_indices = np.where(indices==i)[0]
individual_times.append(times[i_indices])这不是很快,虽然,所以如果有更快的方法来做,我很想知道。谢谢!
编辑:可复制的输入和输出:
#input:
times = np.array([0.25, 0.52, 1.25, 4.0, 6.78])
IDs = np.array([0, 1, 0, 0, 2])
#expected output
individual_times = [np.array([0.25, 1.25, 4.0]), np.array([0.52]), np.array([6.78])]发布于 2021-03-11 15:19:59
你可以试试布尔掩蔽
times = np.array([0.25, 0.52, 1.25, 4.0, 6.78])
IDs = np.array([0, 1, 0, 0, 2])
individual_times = []
for unique_ids in np.sort(np.unique(IDs)):
individual_times.append(times[IDs == unique_ids])
print(individual_times)[array([0.25, 1.25, 4. ]), array([0.52]), array([6.78])]https://stackoverflow.com/questions/66585073
复制相似问题