gpt4 book ai didi

arrays - 用重复列表填充 Julia 中的向量

转载 作者:行者123 更新时间:2023-12-01 09:19:12 27 4
gpt4 key购买 nike

我想通过将长度为 h 的较小列向量 G 重复 n 次来创建列向量 X。最终向量 X 的长度为 h*n。例如

G = [1;2;3;4] #column vector of length h
X = [1;2;3;4;1;2;3;4;1;2;3;4] #ie X = [G;G;G;G] column vector of
length h*n

我可以在循环中执行此操作,但是否有等效于“填充”功能的功能,可以在尺寸不出错的情况下使用。当我尝试在这种情况下使用填充时,我得到的不是长度为 h*n 的列向量,而是长度为 n 的列向量,其中每一行是另一个长度为 h 的向量。例如,我得到以下信息:
X = [[1,2,3,4];[1,2,3,4];[1,2,3,4];[1,2,3,4]]

这对我来说没有意义,因为我知道 ;符号用于显示行中的元素,空格用于显示列中的元素。为什么这里使用 , 符号,它甚至是什么意思?例如,我可以通过 X[1] 访问最终输出 X 的第一行,然后通过 X[1][1] 访问其中的任何元素。

我想使用一些“填充”等效项或某种“展平”功能(如果存在),将 X 的所有元素展平为一个列向量,每个条目都是一个数字。

我也尝试了输出的 reshape 功能,但我也无法让它工作。

最佳答案

正如@DanGetz 在评论中指出的那样,repeat是你想要的功能。来自 docs :

repeat(A, inner = Int[], outer = Int[])

Construct an array by repeating the entries of A. The i-th element of inner specifies the number of times that the individual entries of the i-th dimension of A should be repeated. The i-th element of outer specifies the number of times that a slice along the i-th dimension of A should be repeated.



因此,可以执行您想要的操作的示例是:
X = repeat(G; outer=[k])

哪里 G是要重复的数组, k是重复的次数。

我还将尝试回答您对 fill 结果的困惑。 . Julia(像大多数语言一样)区分包含数字的向量和数字本身。我们知道 fill(5, 5)生产 [5, 5, 5, 5, 5] ,这是一个一维数组(一个向量),其中每个元素是 5 .

请注意 fill([5], 5) ,然而,产生一个一维数组(一个向量),其中每个元素是 [5] ,本身是一个向量。这打印为
5-element Array{Array{Int64,1},1}:
[5]
[5]
[5]
[5]
[5]

我们从类型中看到这确实是一个向量的向量。这当然与向量的串联不同。请注意 [[5]; [5]; [5]; [5]; [5]]是连接语法,将返回 [5, 5, 5, 5, 5]正如您所料。但是虽然 ;语法 ( vcat ) 进行连接, fill不进行串联。

在数学上(在某些定义下),我们可以想象 R^(kn) 与 (R^k)^n 不同(尽管同构),例如,其中 R^k 是实数的 k 元组的集合。 fill构造后者的对象,而 repeat构造前者的对象。

关于arrays - 用重复列表填充 Julia 中的向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36683052/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com