我有一个二维数组:
expenses = np.array([['jim', 'sam', 'bill', 'sam'],[1,2,6,5]])
我希望能够得到每个独特人员的总支出,并将其存储在新数组中,而不需要硬编码任何名称(真实列表非常长),以便我可以获得以下输出结果:
totals = [['jim', 'sam', 'bill'],[1,7,6]]
有没有使用列表或NumPy的方法来完成这个操作?我不想使用Pandas。
提前感谢!
names = np.asarray(['jim', 'sam', 'bill', 'sam'])
values = np.asarray([1, 2, 6, 5])
result = {name: values[names == name].sum() for name in np.unique(names)}
names, values = np.loadtxt('data.txt', delimiter=',', unpack=True, dtype='str'
- Haddock-sannamess = np.loadtxt('data.txt', delimiter=',', dtype='str', usecols=[0]) values = np.loadtxt('data.txt', delimiter=',', dtype='int', usecols=[1])
- Haddock-sanCounter
:from collections import Counter
names = ['jim', 'sam', 'bill', 'sam']
counts = [1,2,6,5]
c = Counter()
for name, count in zip(names,counts):
c[name] += count
# Remapping of dict to list of lists
list(map(list, zip(*c.items())))
输出:
[['sam', 'jim', 'bill'], [7, 1, 6]]
groupby
操作,但在 numpy 中,你需要遍历键和索引,然后求和。 - it's-yer-boy-chet