【问题标题】:Tiling or repeating n-dimensional arrays in Julia在 Julia 中平铺或重复 n 维数组
【发布时间】:2014-09-10 21:13:13
【问题描述】:

我正在寻找一个通用函数来沿任意数量的维度平铺或重复矩阵任意次数。 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 开发人员会在标准库中实现类似的东西,但在那之前,最好有一个修复。

【问题讨论】:

标签: matrix julia


【解决方案1】:

使用repeat:

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

【讨论】:

  • 因为repmat是原来的函数,后来又加上了repeat。重复也比repmat 更通用,因为它支持内部重复和外部重复。
猜你喜欢
  • 2020-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-01
  • 1970-01-01
  • 2019-09-30
  • 1970-01-01
  • 2016-01-11
相关资源
最近更新 更多