python - 如何在不超出由另一列中的值设置的间隔范围的情况下随机调整列的每个数组中的值
问题描述
我在熊猫数据框中有以下数据:
FileName Onsets Offsets
FileName1 [0, 270.78, 763.33] [188.56, 727.28, 1252.90]
FileName2 [0, 634.34, 1166.57, 1775.95, 2104.01] [472.04, 1034.37, 1575.88, 1970.79, 2457.09]
FileName3 [0, 560.97, 1332.21, 1532.47] [356.79, 1286.26, 1488.54, 2018.61]
这些是来自音频文件的数据。每行包含我正在研究的每种声音的一系列开始和偏移时间。这意味着数字是耦合的,例如第二个偏移时间标志着在第二个开始时间开始的声音的结束。
为了检验一个假设,我需要在各种范围内选择随机偏移时间。例如,我需要将每个偏移时间乘以 0.95 到 1.05,以在实际偏移时间周围 +/- 5% 的范围内创建随机调整。然后是 0.90 到 1.10,依此类推。
重要的是,调整不需要将偏移时间推早或晚于之前或之后的开始时间。我认为这意味着我需要首先计算每个偏移时间的最大可接受调整,然后将整个数据集的最大允许时间设置为最低可接受调整。我将把这段代码用于不同的数据集,所以这个最大调整百分比不应该是硬编码的。
我该如何编写这个函数?
下面的代码会生成调整,但我还没有想出计算和设置边界。
import random
Offsets_5 = Offsets*(random.uniform(0.95,1.05))
Offsets_10 = Offsets*(random.uniform(0.90,1.10))
Offsets_15 = Offsets*(random.uniform(0.85,1.15))
解决方案
推荐阅读
- python - 从 x 和 y 列获取 matplotlib 中的 xy 图
- kubernetes - 如何在 k3s / k3d 中找到并调用 kube-apiserver(有 Calico 和没有 Calico)?
- spring-boot - 自定义对象映射器在 springboot docker 容器中不起作用
- javafx - 使用 JavaFX 制作 3D 太阳系动画
- javascript - 无法在异步等待中访问我的数组的索引
- mysql - 运行此查询时 MySQL 未更新
- reactjs - 使逻辑组件在反应中可重用
- c++ - 交叉编译到 esp-idf
- mysql - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 7 行的 ')' 附近使用正确的语法
- sql - 使用 DELETE 查询删除 SQL 中的记录