首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有效地将数组的ID值对转换为每个ID- NumPy的数组

有效地将数组的ID值对转换为每个ID- NumPy的数组
EN

Stack Overflow用户
提问于 2021-03-11 14:59:17
回答 1查看 21关注 0票数 0

问题:

我有一个多个二进制神经元平行记录的数据集。每当神经元触发时,火的时间被记录到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的位置,然后索引到时间数组中:

代码语言:javascript
运行
复制
    individual_times = []
    for i in range(minindex, maxindex+1):
        i_indices = np.where(indices==i)[0]
        individual_times.append(times[i_indices])

这不是很快,虽然,所以如果有更快的方法来做,我很想知道。谢谢!

编辑:可复制的输入和输出:

代码语言:javascript
运行
复制
#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])]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-11 15:19:59

你可以试试布尔掩蔽

代码语言:javascript
运行
复制
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)
代码语言:javascript
运行
复制
[array([0.25, 1.25, 4.  ]), array([0.52]), array([6.78])]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66585073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档