【问题标题】:Declaring multiple arrays in Julia在 Julia 中声明多个数组
【发布时间】:2014-11-20 11:15:32
【问题描述】:

假设我需要声明(但不初始化)五个 10x10 数组,例如,命名为 A1-A5。 Fortran 对这种多数组声明有很好的语法:

REAL(8), DIMENSION(10,10) :: A1, A2, A3, A4, A5

但是,我知道的 Julia 中唯一的方法要丑得多:

A1 = Array(Float64, 10, 10)
A2 = Array(Float64, 10, 10)
A3 = Array(Float64, 10, 10)
A4 = Array(Float64, 10, 10)
A5 = Array(Float64, 10, 10)

有没有更简洁的方式在Julia中声明多个相同维度的数组?

【问题讨论】:

    标签: arrays julia


    【解决方案1】:

    感谢@simonster 在another question 中的帮助,您可以使用元编程简洁地声明变量,而无需任何运行时开销,

    for x = [:A1,:A2,:A3,:A4,:A5]
        @eval $x = Array(Float64,10,10)
    end
    

    但是,我们现在可以比 Fortran 做得更好,因为它还允许您动态生成名称:

    for x in [symbol("A"*string(i)) for i=1:100]
        @eval $x = Array(Float64,10,10)
    end
    

    这将分配 100 个数组 A1-A100。感谢@rickhf12hs 对这个想法/实现的评论。

    【讨论】:

    • 感谢您的感谢! 8-) 感谢@simonster 让我们开始。
    【解决方案2】:

    假设可以创建一个包含五个数组的临时数组,您可以使用数组推导:

    A1, A2, A3, A4, A5 = [Array(Float64, 10, 10) for i = 1:5]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-18
      • 2020-04-19
      • 2022-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多