我有2列的numpy数组。第二列代表我要减少的键。
>>> x
array([[0.1,1. ],[0.25,[0.45,0. ],[0.55,0. ]])
我想总结所有共享一个键的值,像这样。
>>>sum_key(x)
array([[0.35,[1.0,0. ]])
这似乎是一个相对普遍的任务,但我找不到很好的名字或看到它进行讨论。 有什么想法吗?
我有2列的numpy数组。第二列代表我要减少的键。
>>> x
array([[0.1,1. ],[0.25,[0.45,0. ],[0.55,0. ]])
我想总结所有共享一个键的值,像这样。
>>>sum_key(x)
array([[0.35,[1.0,0. ]])
这似乎是一个相对普遍的任务,但我找不到很好的名字或看到它进行讨论。 有什么想法吗?
这有点复杂,但是应该可以完成工作:
import numpy as np
x = np.array([[0.1,1. ],[0.25,[0.45,0. ],[0.55,0. ]])
keys = x[:,1]
values = x[:,0]
keys_unique = np.unique(keys)
print([[sum(values[keys == k]),k] for k in keys_unique])
输出:
[[1.0,0.0],[0.35,1.0]]
,
import numpy as np
import pandas as pd
data = np.array([[0.1,0. ]])
df = pd.DataFrame(data)
gr = df.groupby([1])[0].agg('sum')
print(gr.keys().values)
data1 = np.array([[gr[k],k] for k in gr.keys().values])
print(data1)
,
如果索引(键)是升序整数(或者可以根据情况轻松转换),则最方便的方法是使用 np.bincount。
import numpy as np
x = np.array([[0.1,0. ]])
v = x[:,0]
i = x[:,1]
counts = np.bincount(i.astype(int),v)
print(counts)
# returns [1. 0.35]