【问题标题】:Julia: counting total number of elements in an array-of-arraysJulia:计算数组中的元素总数
【发布时间】:2020-09-17 02:14:43
【问题描述】:

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

这就是我的意思:

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

我正在寻找这样的功能 desired_function(my_array_of_arrays) 将返回 6

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

提前致谢!

【问题讨论】:

    标签: arrays julia jagged-arrays arrayofarrays


    【解决方案1】:

    无需额外依赖的一种方法是使用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。谢谢,我编辑了我的答案以反映您的评论
    【解决方案2】:

    @MattB 建议的sum(length, x) 是一个更优雅的答案,值得在这里,以便其他人可以找到它。

    测试:

    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) 两种方法的性能是相同的,因为它们都没有具体化数据。

    【讨论】:

    • 感谢您指出这一点,我看到“已接受答案”的原始海报已经编辑了他们的答案以反映这一点。
    猜你喜欢
    • 2021-07-19
    • 2021-06-05
    • 2021-10-12
    • 2017-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-26
    相关资源
    最近更新 更多