Julia 中是否有一个函数可以为您提供数组数组(或“锯齿状数组”)中的元素总数?
这就是我的意思:
my_array_of_arrays = [ [1, 5], [6], [10, 10, 11] ]
我正在寻找一个
desired_function(my_array_of_arrays)
可以返回的函数6
如果没有,在 Julia 中最快的方法是什么?
提前致谢!
Julia 中是否有一个函数可以为您提供数组数组(或“锯齿状数组”)中的元素总数?
这就是我的意思:
my_array_of_arrays = [ [1, 5], [6], [10, 10, 11] ]
我正在寻找一个
desired_function(my_array_of_arrays)
可以返回的函数6
如果没有,在 Julia 中最快的方法是什么?
提前致谢!
一种不需要额外依赖的方法是使用sum
:
julia> my_array_of_arrays = [ [1, 5], [6], [10, 10, 11] ]
3-element Array{Array{Int64,1},1}:
[1, 5]
[6]
[10, 10, 11]
julia> sum(length, my_array_of_arrays)
6
但是,如果您想更深入地处理不规则数组,则最好使用专门的包,例如ArraysOfArrays.jl
.
sum(length, x)
@MattB 建议的是一个更优雅的答案,它值得在这里,以便其他人可以找到它。
测试:
julia> my_array_of_arrays = [ [1, 5], [6], [10, 10, 11] ]
3-element Array{Array{Int64,1},1}:
[1, 5]
[6]
[10, 10, 11]
julia> sum(length, my_array_of_arrays)
6
请注意,这两种方法的性能mapreduce(length, +, x)
是sum(length, x)
相同的,因为两者都没有具体化数据。