Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 索引列表值列表上的Numpy加权平均_Python_Numpy - Fatal编程技术网

Python 索引列表值列表上的Numpy加权平均

Python 索引列表值列表上的Numpy加权平均,python,numpy,Python,Numpy,我试图用两个成对的列表得到平均值-索引,值 对于那些不明白我在说什么的人来说,仅仅计算项目编号似乎类似于np.bincount。但就我而言,取平均值而不是计数 比如说, input: i = [0, 1, 1, 2, 2, 2, 3, 3, 3, 3] v = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] what I want: a = [10, 8.5, 6, 2.5] # 10 for average of values whose i = 0: 10 # 8.5

我试图用两个成对的列表得到平均值-索引,值

对于那些不明白我在说什么的人来说,仅仅计算项目编号似乎类似于
np.bincount
。但就我而言,取平均值而不是计数

比如说,

input:
i = [0,  1, 1, 2, 2, 2, 3, 3, 3, 3]
v = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

what I want:
a = [10, 8.5, 6, 2.5]

# 10  for average of values whose i = 0: 10
# 8.5 for average of values whose i = 1: 9, 8
# 6   for average of values whose i = 2: 7, 6, 5
# 2.5 for average of values whose i = 3: 4, 3, 2, 1
当然我知道有最简单的方法,使用FOR循环。
但我的实际i和v是
numpy.ndarray
,其项目编号约为数百万。
它花费了很长的时间(大约需要几分钟,但我必须反复迭代)

我刚试过一些东西,但没用。也许有人会因此而笑:P

a = np.zeros(4)
a[i] += v
a /= np.bincount(i)
# I hope that "each v" is added to a["each i"], divided each numbers
这是我最后一个不想被使用的希望,比如LOOP:

a = np.zeros(num_length, dtype=np.half)
n = np.zeros(num_length, dtype=np.int16)

for index, value in zip(i, v):
    a[index] += value
    n[index] += 1

a /= n

简单地说:
np.bincount(i,v)/np.bincount(i)
。哇。。。。多简单的方法啊。。。。谢谢!简单地说:
np.bincount(i,v)/np.bincount(i)
。哇。。。。多简单的方法啊。。。。谢谢!