【发布时间】:2016-11-02 17:57:21
【问题描述】:
我正在处理一个非常大的数据集(大约 7500 万个条目),并且我正在尝试显着缩短运行我的代码所花费的时间(现在有一个循环需要几个天)并保持极低的内存使用率。
我有两个长度相同的 numpy 数组(clients 和 units)。我的目标是获取一个值出现在我的第一个列表 (clients) 中的每个索引的列表,然后在每个索引处找到我的第二个列表中的条目总和。
这是我试过的(np是之前导入的numpy库)
# create a list of each value that appears in clients
unq = np.unique(clients)
arr = np.zeros(len(unq))
tmp = np.arange(len(clients))
# for each unique value i in clients
for i in range(len(unq)) :
#create a list inds of all the indices that i occurs in clients
inds = tmp[clients==unq[i]]
# add the sum of all the elements in units at the indices inds to a list
arr[i] = sum(units[inds])
有没有人知道一种方法可以让我在不遍历unq 中的每个元素的情况下找到这些总和?
【问题讨论】:
-
熊猫会是你的选择吗?
-
熊猫总是一种选择。
-
我正在使用 pandas 上传和下载数组,还有其他方法可以使用吗?
标签: python arrays numpy pandas indexing