成对交错数组的Python bin集

2024-06-08 15:04:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一组成对的numpy数组。一对中的每个数组长度相同,但不同对中的数组长度不同。此集合中一对数组的示例如下:

Time: [5,8,12,17,100,121,136,156,200]
Score: [3,4,5,-10,-90,-80,-70,-40,10]

另一对是:

Time: [6,7,9,15,199]
Score: [5,6,7,-11,-130]

我需要根据时间取所有这些对的平均值(或执行装箱)。i、 e.时间应分为10个间隔,每个间隔对应的分数需要取平均值。你知道吗

因此,对于以上2对,我希望得到以下结果:

Time: [1-10,11-20,21-30,31-40,41-50,...,191-200]
Score: [(3+4+5+6+7)/5, (5-10-11)/2, ...]

我该怎么做?有没有一种简单的方法比把每样东西单独装箱然后取平均值更简单?如何基于另一个阵列的存储箱来存储阵列?i、 e.对于一对单独的数组,如何将时间数组划分为10个间隔,然后使用此结果以一致的方式划分相应的得分数组?你知道吗


Tags: 方法numpy示例间隔time方式时间数组
1条回答
网友
1楼 · 发布于 2024-06-08 15:04:28

您可以使用scipy.stats.binned_statistic。这是直方图函数的推广。直方图将空间划分为多个存储箱,并返回每个存储箱中点数的计数。此函数允许计算每个箱子内值(或一组值)的总和、平均值、中值或其他统计值。你知道吗

from scipy import stats
import numpy as np

T1 = [5,8,12,17,100,121,136,156,200]
S1 = [3,4,5,-10,-90,-80,-70,-40,10]

T2 = [6,7,9,15,199]
S2 = [5,6,7,-11,-130]

# Merging all Times and Scores in order
Time = T1 + T2
Score = S1 + S2

output = stats.binned_statistic(Time, Score, statistic='mean',range=(0,200), bins=20)

averages = output[0]

# For empty bins, it generates NaN, we can replace them with 0
print( np.nan_to_num(averages, 0) )

# Output of this code: 
# [  5.          -5.33333333   0.           0.           0.
#    0.           0.           0.           0.           0.
#  -90.           0.         -80.         -70.           0.
#  -40.           0.           0.           0.         -60.        ]

更多信息请参见this link。你知道吗

相关问题 更多 >