朱莉娅 - 根据矢量重塑数组

时间:2016-10-29 14:01:55

标签: julia reshape

我有一个数组数组,

java.lang.NoSuchMethodError: No virtual method launchUrl(Landroid/app/Activity;Landroid/net/Uri;)V in class Landroid/support/customtabs/CustomTabsIntent

长度不一,这只是众多可能性之一

我需要做一个b = vcat(a ...)给我

49455-element Array{Array{AbstractString,1},1}

并将其转换为SharedArray以使所有核心都处理其中的字符串(我将转换为curtians后面的Char矩阵,但这并不重要)

在a中,每个元素都是一些包含多个字符串的数组,我这样做

195158-element Array{AbstractString,1}:

有没有办法可以轻松地将数组b重新调整到与?

相同的尺寸

2 个答案:

答案 0 :(得分:3)

使用Iterators.jl包:

# `a` holds original. `b` holds flattened version. `newa` should == `a`

using Iterators            # install using Pkg.add("Iterators")
lmap = map(length,a)       # same length vector defined in OP

newa = [b[ib+1:ie] for (ib,ie) in partition([0;cumsum(lmap)],2,1)]

这有点整洁,也可用于为原始向量生成生成器,但for循环实现应该同样快速和清晰。

答案 1 :(得分:2)

作为Dan Getz答案的补充,我们也可以使用zip代替Iterators.jl的partition

tails = cumsum(map(length,a))
heads = [1;tails+1][1:end-1]
newa = [b[i:j] for (i,j) in zip(heads,tails)]