4

Julia 中是否有一个函数可以为您提供数组数组(或“锯齿状数组”)中的元素总数?

这就是我的意思:

my_array_of_arrays = [ [1, 5], [6], [10, 10, 11] ] 

我正在寻找一个 desired_function(my_array_of_arrays)可以返回的函数6

如果没有,在 Julia 中最快的方法是什么?

提前致谢!

4

2 回答 2

5

一种不需要额外依赖的方法是使用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.

于 2020-05-29T13:36:59.063 回答
4

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)相同的,因为两者都没有具体化数据。

于 2020-05-29T23:41:14.017 回答