Matrix 在Julia中平铺或重复n维数组

Matrix 在Julia中平铺或重复n维数组,matrix,julia,Matrix,Julia,我正在寻找一个通用函数,可以沿任意数量的维度平铺或重复矩阵任意次数。Python和Matlab在NumPy的tile和Matlab的repmat函数中具有这些特性。Julia的repmat函数似乎最多只支持二维数组 函数应该看起来像repmatnd(a,(n1,n2,…,nk))。a是任意维的数组。第二个参数是一个元组,指定数组对每个维度k重复的次数 知道如何在大于2维的空间上平铺Julia数组吗?在Python中,我将使用np.tile和MatlabRepmat,但Julia中的repmat函

我正在寻找一个通用函数,可以沿任意数量的维度平铺或重复矩阵任意次数。Python和Matlab在NumPy的tile和Matlab的repmat函数中具有这些特性。Julia的repmat函数似乎最多只支持二维数组

函数应该看起来像repmatnd(a,(n1,n2,…,nk))。a是任意维的数组。第二个参数是一个元组,指定数组对每个维度k重复的次数

知道如何在大于2维的空间上平铺Julia数组吗?在Python中,我将使用np.tile和MatlabRepmat,但Julia中的repmat函数只支持二维

比如说,

x = [1 2 3]
repmatnd(x, 3, 1, 3)
将导致:

1 2 3
1 2 3
1 2 3

1 2 3
1 2 3
1 2 3

1 2 3
1 2 3
1 2 3
以及

x = [1 2 3; 1 2 3; 1 2 3]
repmatnd(x, (1, 1, 3))

结果和以前一样。我想Julia开发人员将在标准库中实现类似的功能,但在此之前,最好有一个修复程序。

使用
重复

julia> X = [1 2 3]
1x3 Array{Int64,2}:
 1  2  3

julia> repeat(X, outer = [3, 1, 3])
3x3x3 Array{Int64,3}:
[:, :, 1] =
 1  2  3
 1  2  3
 1  2  3

[:, :, 2] =
 1  2  3
 1  2  3
 1  2  3

[:, :, 3] =
 1  2  3
 1  2  3
 1  2  3

我相信repeat函数可能就是您想要的:。很抱歉,我一直在用评论回答问题–我没有时间/精力写完整的答案,包括示例和所有的爵士乐。因为
repmat
是最初的函数,后来又添加了
repeat
。Repeat也比repmat更通用,因为它支持内部重复和外部重复。