A 列有一个数字范围。我想将 A 列中的每个数字与其他每个数字进行比较。我想要差值小于/等于 2 的所有值的每个数字的平均值。所需的输出将在 B 列中。这是在 Excel 中有效的解决方案:
=AVERAGE(IF(INDEX(ABS($A$1:$A$5-TRANSPOSE($A$1:$A$5)),,ROW(B1))<2,$A$1:$A$5))
但是,现在我正在尝试学习Python,并希望将解决方案移至那里。任何帮助将不胜感激。
a = np.array([4798,4802,4803,4805,4809])
a - np.nanmean(np.where(abs(b := a - a[:,None]) <= 2, b, np.nan), 0)
array([4798. , 4802.5 , 4803.33333333, 4804. ,
4809. ])