python - 根据距离分配值(value) - pandas

标签 python pandas

我有一个如下的 pandas 系列,它代表距该点的距离。

[53.14215611146749,
 68.38785810979309,
 73.39766970890767,
 62.55809054344587,
 61.65664511406602,
 67.30027137647377,
 53.18713806914155,
 44.731280834334726,
 56.775601188099564,
 48.70050608722388,
 52.058305375893326,
 43.86576801918336,
 40.7737929704101,
 48.14255989609582,
 66.1008274224399,
 64.14163441281926,
 74.19664861255285,
 39.2240226739306,
 43.19696483020877,
 56.19908015933838,
 52.75637095625348,
 72.94738557673514,
 68.43340406723989,
 55.3282335432387,
 14.063542002183079,
 65.42855719150613,
 64.57283331956563,
 55.7359195807484,
 46.47999444513133,
 67.90377608318023,
 45.20662678388409,
 60.89180227702483,
 55.498083875456516,
 66.27610947615794,
 22.845312320987933,
 55.68089486356418,
 37.17249970361574,
 31.996833503627055,
 8.004580252301615,
 57.701300278758396,
 55.68491218953833,
 49.69553182988371,
 62.857799532025695,
 64.4881255962942,
 56.52268246645304,
 53.70335480184844,
 47.68999060768484,
 70.19624652173587,
 46.06795699534889,
 43.10099872431838,
 39.554771098646285,
 39.35671580350949,
 63.702434120074344,
 63.97772732522319,
 55.721880827686036,
 40.45931808597496,
 54.21292609875884,
 16.675696857750737,
 41.39693209332469,
 54.254194394652124,
 20.35367440002031,
 59.334225047181775,
 54.27213837753601,
 71.06412120928913,
 32.77778238532229,
 44.525878012920465,
 21.633778938745873,
 62.82994949086467,
 53.74149464908078,
 43.55381629902706,
 62.06565329192727,
 60.84255535670013,
 69.61908591774456,
 62.42694740156783,
 24.305272369346792,
 53.67321288616061,
 41.51862527126106,
 53.06105426101688,
 52.29598013335814,
 56.56807611441198,
 54.44050075253376,
 69.0021067468377,
 51.62347224748836,
 52.22881959386345,
 46.864584528474325,
 47.012472881260116,
 51.646519289015345,
 45.619767144941775,
 8.519681182197928,
 68.36194018083505,
 24.231287660834653,
 54.903970823297854,
 38.8830383852113,
 60.93359558626832,
 60.20955222539125,
 49.42302250000802,
 44.393460251409024,
 41.81242566960246,
 56.712784485916885,
 19.378568603967558]

现在,我需要在这 100 个数字中分配一个数字(例如 15)。

如果距离较小,则应获得较大的比例 15。如果距离较大,则应获得较小的比例 15。

即 14.063542002183079 的输出应该获得更大的比例(因为它更近),而 53.14215611146749 应该变得更小(因为它更远)

但是,100 个派生数字的总和应该为 15(即值 15 根据距离分配)。

到目前为止我已经尝试过

我使用softmax函数将这些距离数字(100个列表)转换为0和1之间。

将列表中的每个数字乘以 15。现在,列表中的数字之和为 15。但这些值不是根据距离分布的。

最佳答案

N = 15

dists   = 1 / (s - N).abs()
weights = dists / dists.sum()

result = weights * N
  • 找到与 N 的绝对差的距离,但倒数越近越好
  • 通过归一化距离求和来获取权重
  • 为 N 分配权重

关于python - 根据距离分配值(value) - pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73831011/

相关文章:

python - Matplotlib Boxplot 和 pandas 数据框数据类型

python - 如何通过XML数据更快的更新MySQL?

python - easy_install 在 Windows XP 中出现错误 "Not a recognized archive type"

python os.environ, os.putenv,/usr/bin/env

python - 将 python 脚本作为 Windows 服务运行

python - 来自seaborn的facetgrid中不同数据帧的两行

python - 抓取具有 .onion 域的网站的最简单方法?

python - 在 Pandas 中重新编制索引时删除不必要的行

python - Pandas - 使用 groupby 将列与字符串组合 - TypeError 消息问题

python - 如何在 Pandas 中对日期时间列使用条件逻辑?