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

标签 matrix julia

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

该函数应类似于repmatnd(a, (n1,n2,...,nk))。 a 是任意维度的数组。第二个参数是一个元组,指定每个维度 k 重复数组的次数。

知道如何在大于 2 的维度上平铺 Julia 数组吗?在Python中我会使用np.tile,在matlab中我会使用repmat,但是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

关于matrix - 在 Julia 中平铺或重复 n 维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24846899/

相关文章:

python - 在 python 中将 numpy 矩阵类型转换为字符串

r - 如何从另一个向量中获取包含具有相应值的字符的矩阵的行总和

c - 更新打印到屏幕的 ascii 网格而不重新打印网格

parallel-processing - 如何在 Julia 中到处定义宏?

数组破坏了 Julia 中的字符串类型

Julia : BLAS. gemm!() 参数

python - 如何切片由 numpy.void 数字组成的 numpy.ndarray?

language-agnostic - 不同语言在机器学习中的相对受欢迎程度?

image - Julia Flux,神经网络中不同维度的图像

julia - 了解 Julia Int 溢出行为