我有两个具有相关数据的数组。使用xlrd从Excel电子表格中填充数据。这两个数组是:
foundLocations['D47', 'D33', 'D33', 'D35', 'PM001']
foundCounts['240.0', '105.0', '24.0', '56.0', '92.0']
这些值一直在变化,但是正如您所看到的,在此示例中,“ D33”出现了两次。
我想将foundCounts [1]和foundCounts [2]的值相加(在此示例中),以得出位置“ D33”以及其他位置的总数。因此,“ D47”将有240.0件。 'D33'将有129.0件。 'D35'将拥有56.0件。 “ PM001”将有92.0件。
预期输出:
D33总计:129.0
D35总数:56.0
D47总数:240.0
PM001总计:92.0
我尝试将数组转换为numpy数组并执行以下操作:
import numpy as np
from numpy import array
a = array(foundLocations)
for r in foundLocations:
searchval = r
ii = np.where(a == searchval)[0]
print(foundCounts[ii])
但是我得到:
TypeError:仅整数标量数组可以转换为标量 索引。
答案 0 :(得分:0)
您似乎希望将字典作为最终结果,因此尚不清楚numpy是否真的是正确的选择。
这是一种获取总计字典的非numpy方法。这只是使用setdefault()
添加到每个键中,以确保定义了每个键,并且总数从零开始:
foundLocations = ['D47', 'D33', 'D33', 'D35', 'PM001']
foundCounts = ['240.0', '105.0', '24.0', '56.0', '92.0']
totals = {}
for loc, count in zip(foundLocations, foundCounts):
totals[loc] = totals.setdefault(loc, 0) + float(count)
totals
输出:
{'D47': 240.0, 'D33': 129.0, 'D35': 56.0, 'PM001': 92.0}