有条件地向NumPy记录数组的int元素添加1

2024-09-19 23:43:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大的numpy记录数组,2.5亿行x 9列(MyLargeRec)。如果第7列(dtype=“int”)的索引在另一个列表或300000个整数(MyList)中,我需要在第7列中添加1。如果这是一个普通的python列表,我将使用以下简单代码。。。在

for m in MyList:
    MyLargeRec[m][6]+=1

然而,我似乎无法使用NumPy记录数组获得类似的功能。我已经尝试了一些选项,比如nditer,但是这并不能让我选择我想要的特定索引。在

现在你可能会说这不是NumPy的设计目的,所以让我解释一下为什么我要使用这种格式。我使用它是因为从头开始构建记录数组只需要30分钟,而使用传统的2D列表格式则需要24小时以上。我昨天花了整整一天的时间试图找到一个方法来做这个,但是没有成功,我最终用。。。在

^{pr2}$

所以我可以使用上面的简单代码来实现我想要的,但是这花了8.5个小时来执行这个功能。在

因此,有没有人可以先告诉我,有没有一种方法可以在NumPy记录数组中实现我想要的结果?第二,如果不是的话,有没有关于Python2.7中创建、更新和存储如此大的二维矩阵的最佳方法的想法?在

非常感谢

汤姆


Tags: 方法代码功能numpy列表格式记录整数
2条回答

这个代码。。。在

for m in MyList:
    MyLargeRec[m][6]+=1

真的管用,我的愚蠢问题。在

your_array[index_list, 6] += 1

Numpy允许您构建一些非常整洁的切片。这将选择索引列表中所有行的第6列,并将每个行加1。(请注意,如果某个索引多次出现在索引列表中,则仍只会将1添加到相应的单元格中。)

相关问题 更多 >