小编mat*_*cey的帖子

将ruby hash .default设置为列表

我以为我理解默认方法对哈希的作用...

如果密钥不存在,请为其提供默认值:

irb(main):001:0> a = {}
=> {}
irb(main):002:0> a.default = 4
=> 4
irb(main):003:0> a[8]
=> 4
irb(main):004:0> a[9] += 1
=> 5
irb(main):005:0> a
=> {9=>5}
Run Code Online (Sandbox Code Playgroud)

都好.

但是,如果我设置的默认是一个空列表,或空哈希,我不知道这是在行为 ....

irb(main):001:0> a = {}
=> {}
irb(main):002:0> a.default = []
=> []
irb(main):003:0> a[8] << 9
=> [9]                          # great!
irb(main):004:0> a
=> {}                           # ?! would have expected {8=>[9]}
irb(main):005:0> a[8]
=> [9]                          # awesome!
irb(main):006:0> a[9]
=> [9]                          # unawesome! shouldn't this be [] ??
Run Code Online (Sandbox Code Playgroud)

我希望/期待相同的行为,好像我使用了|| …

ruby hashmap

40
推荐指数
6
解决办法
1万
查看次数

并行化tf.data.Dataset.from_generator

我有一个非常简单的输入管道,from_generator非常适合......

dataset = tf.data.Dataset.from_generator(complex_img_label_generator,
                                        (tf.int32, tf.string))
dataset = dataset.batch(64)
iter = dataset.make_one_shot_iterator()
imgs, labels = iter.get_next()
Run Code Online (Sandbox Code Playgroud)

其中complex_img_label_generator动态生成图像,并返回表示一个numpy的阵列(H, W, 3)图像和一个简单的string标签.处理不是我可以表示从文件和tf.image操作中读取的内容.

我的问题是关于如何平衡发电机?我如何让N个这些生成器在自己的线程中运行.

一个想法是使用dataset.mapnum_parallel_calls处理线程; 但是地图在张量上运行......另一个想法是创建多个生成器,每个生成器都有自己的,prefetch并以某种方式加入它们,但我看不出我如何加入N个生成器流?

我可以遵循任何规范的例子吗?

tensorflow tensorflow-datasets

25
推荐指数
3
解决办法
9029
查看次数

基于密钥在数据框中聚合值

我有一段聚合代码,运行得很好,但对10e6行的数据帧运行有点慢.我不是那种经验丰富的R,所以为我那令人畏缩的代码道歉!

我只是想做一个基本的汇总和共同键的值的总和...

例如从...来

  key val
1   a   5
2   b   7
3   a   6
Run Code Online (Sandbox Code Playgroud)

至...

  key val
1   a   11
2   b   7
Run Code Online (Sandbox Code Playgroud)

我能管理的最好的是......

keys = unique(inp$key)
vals = sapply(keys, function(x) { sum(inp[inp$key==x,]$val) })
out = data.frame(key=keys, val=vals)
Run Code Online (Sandbox Code Playgroud)

我有这种直觉,认为这inp[inp$key==x,]不是最好的方法.是否有明显的加速我错过了?我可以在Hadoop中做到这一点(因为10e6数据集实际上已经是来自2e9行数据集的汇总)但我正在尝试改进我的R.

干杯,垫子

r idiomatic

9
推荐指数
2
解决办法
7706
查看次数

从成对距离集确定点

给定点之间的距离矩阵是否存在用于确定具有这些距离的一组n维点的算法?(或至少最小化错误)

有点像收费公路问题的n维版本.

我能想到的最好的就是使用多维缩放.

algorithm geometry matrix

6
推荐指数
1
解决办法
932
查看次数

使用对数来避免数值下溢的算术问题(取2)

我有两个分数列表;

A = [ 1/212, 5/212, 3/212, ... ]

B = [ 4/143, 7/143, 2/143, ... ].

如果我们定义A' = a[0] * a[1] * a[2] * ...B' = b[0] * b[1] * b[2] * ...

我想计算A'和B'的归一化值

即特别是A' / (A'+B')和 的值B' / (A'+B')

我的麻烦是A是B都很长,每个值都很小所以计算产品会导致数值下溢很快...

我理解通过对数将产品转化为总和可以帮助我确定A'或B'中哪一个更大

max( log(a[0])+log(a[1])+..., log(b[0])+log(b[1])+... )

并且使用日志我可以计算出值,A' / B'但我该怎么做A' / A'+B'

我迄今为止最好的选择是将数字表示保持为分数,即A = [ [1,212], [5,212], [3,212], ... ]实现我自己的算术,但它变得笨拙而且我感觉有一种(简单的)对数方式我只是缺少了....

A和B的分子不是来自序列.对于这个问题,它们也可能是随机的.如果它有助于分母中A的所有值都相同,那么B的所有分母都是如此.

欢迎任何想法!

(ps.我在24小时前问了一个关于这个比例的类似问题, …

logarithm numerical-methods

6
推荐指数
1
解决办法
2267
查看次数

样本量为A/B Fisher测试的意义

鉴于简单A/B测试的结果......

        A   B
clicked 8   60
ignored 192 1940
Run Code Online (Sandbox Code Playgroud)

(即A 4%和B 3%的谈话率)

... R中的一项费希尔测试表明,没有显着差异

> fisher.test(data.frame(A=c(8,192), B=c(60,1940)))
...
p-value = 0.3933
...
Run Code Online (Sandbox Code Playgroud)

但是R中有哪些功能可以告诉我需要增加样本量以达到0.05的p值?

我可以增加A值(按比例)直到我达到它但是必须有更好的方法吗?也许pwr.2p2n.test [1]在某种程度上可用?

[1] http://rss.acs.unt.edu/Rdoc/library/pwr/html/pwr.2p2n.test.html

statistics r ab-testing

6
推荐指数
1
解决办法
2795
查看次数

相当于内存检查的时间

我们可以time在unix环境中使用,看看有多长时间......

shell> time some_random_command
real    0m0.709s
user    0m0.008s
sys     0m0.012s
Run Code Online (Sandbox Code Playgroud)

是否有相应的记录进程的内存使用?

特别是我对峰值分配感兴趣.

unix statistics

5
推荐指数
1
解决办法
543
查看次数

在Java中处理错误编码的UTF-16(?)

我正在做一些关于常见爬网数据集(大型网络爬网)的工作,我一直看到一个奇怪的编码模式,我无法解决如何处理.

我一次又一次看到的模式类似于我猜测的字节序列.50 6f 6b e9 6d 6f 6ePokémon

现在编码模式是不是我的最强点,但我不知道任何编码它是合法代表的é是公正e9.

这有点像[UTF-16] [1] fe ff 00 50 00 6f 00 6b 00 e9 00 6d 00 6f 00 6e

它绝对不是UTF-8 50 6f 6b c3 a9 6d 6f 6e

所以我只是用Java的方法将这些字节解码成一个字符串,一个库是理想的.

new String(bytes)理所当然地不起作用并正确地将其转换e9为替代品ef bf bd(又名可怕的 )

有关如何处理这些的任何想法?

更新

我最终使用了Apache Tika [2]中提供的字符集编码检测器.效果很好.

[1] http://www.fileformat.info/info/unicode/char/e9/index.htm

[2] http://tika.apache.org/0.8/api/org/apache/tika/parser/txt/CharsetDetector.html

java string utf-8 character-encoding

4
推荐指数
1
解决办法
1689
查看次数

从data.frame中提取行标签(?)

从data.frame开始......

df = data.frame(k=c(1,5,4,7,6), v=c(3,1,4,1,5))
> df
  k v
1 1 3
2 5 1
3 4 4
4 7 1
5 6 5
Run Code Online (Sandbox Code Playgroud)

我可能会进行一些任意操作......

> foo1 = df[df$k>3,]
> foo2 = head(foo1[order(foo1$v),], 2)
> foo2
  k v
2 5 1
4 7 1
Run Code Online (Sandbox Code Playgroud)

此时foo2以某种方式保留了原始行号df(在本例中为2和4).

我该如何提取这些?

> insert_magic_function_here(foo2)
[1] 2 4
Run Code Online (Sandbox Code Playgroud)

r dataframe

3
推荐指数
1
解决办法
3551
查看次数

使用FileInputFormat.addInputPaths递归添加HDFS路径

我有一个类似的HDFS结构

a/b/file1.gz
a/b/file2.gz
a/c/file3.gz
a/c/file4.gz
Run Code Online (Sandbox Code Playgroud)

我使用的是经典模式

FileInputFormat.addInputPaths(conf, args[0]);
Run Code Online (Sandbox Code Playgroud)

设置我的Java映射减少作业的输入路径。

如果我将args [0]指定为a / b,则效果很好,但如果仅指定a(我的意图是要处理所有4个文件),它将失败

错误是

Exception in thread "main" java.io.IOException: Not a file: hdfs://host:9000/user/hadoop/a
Run Code Online (Sandbox Code Playgroud)

如何将所有内容递归添加

我一定错过了一些简单的事情...

java hadoop hdfs

2
推荐指数
1
解决办法
4854
查看次数