gpt4 book ai didi

arrays - 重复数组行指定次数

转载 作者:行者123 更新时间:2023-12-04 02:30:48 25 4
gpt4 key购买 nike

julia 的新手,所以这可能非常简单。

我有一个 n×m 数组和一个长度为 n 的向量,我想在向量的相应元素中重复数组的每一行的次数。例如:

mat = rand(3,6)
v = vec([2 3 1])

结果应该是一个 6×6 数组。我尝试了 repeat 函数但是

repeat(mat, inner = v)

生成一个 6×18×1 Array{Float64,3}: 数组,所以它需要 v 作为重复元素的维度。在 matlab 中,我会使用 repelem(mat, v, 1) 我希望 julia 提供类似的东西。我的实际矩阵要大得多,我将不得不多次调用该函数,因此此操作需要尽可能快。

最佳答案

已经讨论过要在 Julia Base 中添加类似的东西,但目前还没有实现 AFAIK。您可以使用 StatsBase.jl 中的 inverse_rle 函数实现您想要的:

julia> row_idx = inverse_rle(axes(v, 1), v)
6-element Array{Int64,1}:
1
1
2
2
2
3

现在你可以写:

mat[row_idx, :]

@view mat[row_idx, :]

(第二个选项创建一个 View ,如果您说您的 mat 很大并且您需要多次进行此类索引 - 哪个选项更快将取决于您的用例您的确切用例)。

关于arrays - 重复数组行指定次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64295083/

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