【发布时间】:2022-01-16 20:51:13
【问题描述】:
上下文
这个问题与this one有关。
在 Julia 中,我想创建一个 5 x 5 的二维数组,其中 (i, j) 元素具有 [i,j],如下所示:
5×5 Matrix{Vector{Int64}}:
[1, 1] [1, 2] [1, 3] [1, 4] [1, 5]
[2, 1] [2, 2] [2, 3] [2, 4] [2, 5]
[3, 1] [3, 2] [3, 3] [3, 4] [3, 5]
[4, 1] [4, 2] [4, 3] [4, 4] [4, 5]
[5, 1] [5, 2] [5, 3] [5, 4] [5, 5]
我尝试使用array comprehension:
N = 5
L_2 = [[x1,x2] for x1 = 1:N, x2 = 1:N]
我想做什么
我想将这个定义推广到任意维度D。
L_1 = [[x1] for x1 = 1:N] # 1-dimensional
L_2 = [[x1,x2] for x1 = 1:N, x2 = 1:N] # 2-dimensional
L_3 = [[x1,x2,x3] for x1 = 1:N, x2 = 1:N,x3 = 1:N] # 3-dimensional
...
#L_D = ??? # D-dimensional
我该如何定义?
不使用数组解析也没关系。
任何信息将不胜感激。
【问题讨论】:
-
那么你想用这个做什么?如果它是为了索引到以前存在的 N 维数组
X,那么你可以只做CartesianIndices(X)。这适用于任何维度和大小。 -
@DNF 换句话说,
CartesianIndices(X)与CartesianIndices(size(X))做同样的事情。只有当X不存在并且您需要一个 NxNxNx... 索引数组时,才需要所有这些数字运算。
标签: arrays matrix multidimensional-array vector julia