Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby数组插值?_Ruby - Fatal编程技术网

Ruby数组插值?

Ruby数组插值?,ruby,Ruby,所以我有一个数组要在一些图表中呈现和显示,但是假设我的数据集太大了,我怎么能获取一个长度为20000个项目的数组,像是每隔一个项目删除一个,直到数组为1000个项目,或者插入数组,直到它达到那个大小 例如,假设我有以下数组(散列): 我想要一个中间值数组,要么从数组中删除,要么以某种方式插值,就像这样: [ {"timestamp"=>2011-09-05 14:45:00 UTC, "count"=>4622.0}, {"timestamp"=>2011-09-05

所以我有一个数组要在一些图表中呈现和显示,但是假设我的数据集太大了,我怎么能获取一个长度为20000个项目的数组,像是每隔一个项目删除一个,直到数组为1000个项目,或者插入数组,直到它达到那个大小

例如,假设我有以下数组(散列):

我想要一个中间值数组,要么从数组中删除,要么以某种方式插值,就像这样:

[ 
  {"timestamp"=>2011-09-05 14:45:00 UTC, "count"=>4622.0},
  {"timestamp"=>2011-09-05 15:00:00 UTC, "count"=>4655.0},
  {"timestamp"=>2011-09-05 15:30:00 UTC, "count"=>4439.0},
  {"timestamp"=>2011-09-05 16:00:00 UTC, "count"=>4419.0},
  {"timestamp"=>2011-09-05 16:30:00 UTC, "count"=>4429.0},
  {"timestamp"=>2011-09-05 17:00:00 UTC, "count"=>4497.0},
  {"timestamp"=>2011-09-05 17:30:00 UTC, "count"=>4510.0},
  {"timestamp"=>2011-09-05 18:00:00 UTC, "count"=>4471.0},
  {"timestamp"=>2011-09-05 18:30:00 UTC, "count"=>4451.0},
  {"timestamp"=>2011-09-05 19:00:00 UTC, "count"=>4593.0},
  {"timestamp"=>2011-09-05 19:15:00 UTC, "count"=>4540.0},
  {"timestamp"=>2011-09-05 19:45:00 UTC, "count"=>4494.0}
]
如果您对此有任何想法或帮助,我们将不胜感激,我可能也没有抓住要点。

使用:

在你的情况下,你会这样做:

a = [
    # 10 000 little hashes
]
smaller = a.sample(1000)
然后发送
较小的
关闭以显示

如果你想让它们有序排列,你可以重新排序:

smaller.sort! { |a,b| a['timestamp'] <=> b['timestamp'] }
minger.sort!{| a,b | a['timestamp']b['timestamp']}
使用:

在你的情况下,你会这样做:

a = [
    # 10 000 little hashes
]
smaller = a.sample(1000)
然后发送
较小的
关闭以显示

如果你想让它们有序排列,你可以重新排序:

smaller.sort! { |a,b| a['timestamp'] <=> b['timestamp'] }
minger.sort!{| a,b | a['timestamp']b['timestamp']}
要压缩数组,您必须定义一些规则,根据这些规则删除示例。为了便于理解,我使用s简单整数作为时间戳。如果要将其用于数据,则必须稍微修改拒绝方法

 samples = 100.times.map do |i|
   {"timestamp" => i, "count" => rand(100)}
 end

 i = samples.size
 samples.reject! do |item| item["timestamp"]%2 == 0 end
项[“timestamp”]%2==0
是从样本集中删除样本的规则。您可以为数据定义一些时间范围或其他内容

 $> samples.size # => 50
要压缩数组,必须定义一些规则,根据这些规则删除样本。为了便于理解,我使用s简单整数作为时间戳。如果要将其用于数据,则必须稍微修改拒绝方法

 samples = 100.times.map do |i|
   {"timestamp" => i, "count" => rand(100)}
 end

 i = samples.size
 samples.reject! do |item| item["timestamp"]%2 == 0 end
项[“timestamp”]%2==0
是从样本集中删除样本的规则。您可以为数据定义一些时间范围或其他内容

 $> samples.size # => 50
可以通过制作n个元素的切片,然后从每个切片创建一个新元素来减少集合。中间元素、平均值等

data.each_slice(3).collect { |slice| make_one_out_of_a_slice(slice) }
可以通过制作n个元素的切片,然后从每个切片创建一个新元素来减少集合。中间元素、平均值等

data.each_slice(3).collect { |slice| make_one_out_of_a_slice(slice) }

但我不想随机抽样,因为它们是日期,数据需要保持线性且顺序相同。有什么想法吗?嗯,我还是以一个无序的数组结束。@Joseph:你可以对它们进行排序,使它们恢复顺序。不过我不想随机抽样,因为它们是日期,数据需要保持线性,并且顺序相同。有什么想法吗?嗯,我还是以一个无序的数组结束。@Joseph:你可以对它们进行排序,使它们恢复有序。离题,但对于每个“时间戳”和每个“计数”,都会创建一个新字符串。一个符号(:timestamp)更好,或者创建一个结构。你到底需要做什么?以
“timestamp”
顺序随机抽取1000个条目的样本?我同意你的观点,但是数组是MongoDB map reducer的结果:(我不知道如何使它成为一个纯ruby对象,有什么想法吗?穆,我想做的是将一个非常大的数据集缩小,这样浏览器就可以轻松地渲染它,而且由于它是一个时间范围,它需要线性压缩……我很笨,我不知道如何正确地做到这一点:(离题,但对于每个“时间戳”和每个“计数”将创建一个新字符串。一个符号(:timestamp)更好,或者创建一个结构。您到底需要做什么?按
“timestamp”
顺序随机抽取1000个条目的样本?我同意您的看法,但是数组是MongoDB map reducer的结果:(我不知道如何使它成为一个纯ruby对象,有什么想法吗?Mu,我想做的是将一个非常大的数据集缩小,这样浏览器就可以轻松渲染它,而且由于它是一个时间范围,它需要线性压缩…我很笨,我不知道如何正确地做到这一点:(