我有一个数组数组,
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重新调整到与?
相同的尺寸答案 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)]