【发布时间】:2013-12-13 09:42:02
【问题描述】:
我有一个 2.5 亿行乘 9 列的大型 NumpPy 记录数组 (MyLargeRec)。如果该行的索引在另一个列表或 300,000 个整数(MyList)中,我需要将 1 添加到第 7 列(dtype =“int”)。如果这是一个普通的 python 列表,我会使用下面的简单代码...
for m in MyList:
MyLargeRec[m][6]+=1
但是,我似乎无法使用 NumPy 记录数组获得类似的功能。我尝试了一些选项,例如 nditer,但这不会让我选择我想要的特定索引。
现在你可能会说这不是 NumPy 的设计目的,所以让我解释一下我为什么使用这种格式。我使用它是因为从头开始构建记录数组只需要 30 分钟,而如果使用传统的 2D 列表格式则需要 24 小时以上。我昨天花了所有的时间试图找到一种方法来做到这一点,但我最终将它转换为一个列表,使用...
MyLargeList = list(MyLargeRec)
所以我可以使用上面的简单代码来实现我想要的,但是执行此功能需要 8.5 小时。
因此,谁能先告诉我,有没有一种方法可以在 NumPy 记录数组中实现我想要的?其次,如果没有,关于 python 2.7 中创建、更新和存储如此大的二维矩阵的最佳方法的任何想法?
非常感谢
汤姆
【问题讨论】:
标签: python arrays numpy add record