【问题标题】:Getting a fixed amount of data in a certain order from an array从数组中按一定顺序获取固定数量的数据
【发布时间】:2021-05-05 15:18:55
【问题描述】:

我有 1100 个不同大小的数组。有些数组大小是 44,有些是 26。我的最小数组大小是 19。所以我想让它们都具有相同的大小。我将从每个数组中获取 19 个数据。而且我必须按照一定的顺序得到它们。例如,当我有一个 38 大小的数组时,这很容易。由于 38/19 = 2,我可以按 2 步定期获取数据。但是当数组的大小为 44 或 33 时,我应该如何进行。

【问题讨论】:

  • 添加步骤后可能对索引进行四舍五入(或下限)?

标签: python arrays matlab deep-learning resize


【解决方案1】:

正如@beaker 已经提议的那样,我建议通过四舍五入来选择条目,因此要实现您提到的当数字均分时的行为,您可以使用它

function ind = sample(cnt, len)
ind = linspace(1, len+1, cnt+1);
ind = round(ind(1:end-1));
end

这里sample 返回索引,然后可用于从该数组中采样,cnt 是您想要的样本数量,len 是您想要从中采样的数组的长度。

【讨论】:

  • 这是我所需要的。非常感谢。
  • 请问您为什么使用 len + 1 和 cnt + 1 而不是直接使用 len 和 cnt?
  • @pekolas linspace 创建一个包含开始值和结束值的向量,但是您说如果长度均分,则您希望获取每个 other 值,例如0,2,4,6 如果您想从列表[0,1,2,3,4,5,6,7] 中抽取 4 个样本。这意味着我们需要丢弃最后一个值 (ind(1:end-1)) 并使用len+1cnt+1 进行补偿。要了解发生了什么,只需从代码中删除这些 +1 看看你会得到什么!
猜你喜欢
  • 2020-11-26
  • 2021-10-05
  • 2020-02-16
  • 2011-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多