当前位置: 首页 > 知识库问答 >
问题:

重复指定次数的数组行

景仲渊
2023-03-14

对朱莉娅来说是新来的,所以这可能很容易。

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

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

结果应该是6乘6的数组。我尝试了repeat功能,但是

repeat(mat, inner = v)

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

共有1个答案

谢奇略
2023-03-14

已经讨论过向Julia Base添加类似的内容,但目前尚未实现。您可以使用StatsBase中的inverse\rle功能实现所需。jl:

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, :]

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

 类似资料:
  • 我有一个等于10的天数,我有一个周天数数组“周一”、“周二”、“周三”、“周四”、“周五”。现在我想重复这个数组10次。例如,如果天=9,则数组将打印“周一”、“周二”、“周三”、“周四”、“周五”、“周一”、“周二”、“周三”、“周四” 这是我已经尝试过的代码 我拿回来的结果是 但我期待的结果是

  • 我被问到一个面试问题,要求我返回数组中重复次数最多的数字,例如,{1,1,2,3,4}返回1。 我首先在hashtable中提出了一种方法,它要求空间复杂度O(n)。然后我说先对数组排序,然后遍历它,然后我们就可以找到数字了。 有什么优化吗? 谢了。

  • 问题内容: 有没有一种方法可以定义次数,而不必总是遍历数组? 例如,在下面,我希望列表项显示5次,并假设等于5,并且增加数字,因此每个列表项都按1、2、3、4、5递增 所需结果: 问题答案: 较新版本的AngularJS(> = 1.3.0)允许您仅使用变量(无需功能)来执行此操作: 在首次提出问题时这是不可能的。感谢@Nikhil Nambiar从下面的回答中获得此更新 原创(5/29/2013

  • 我已经将代码中的read整数修复为不再是I而是一个单独的变量“index”,并理解为什么我会收到Over Ofbound异常,但我有点厚,不明白如何在添加哨兵值0的同时修复它。

  • 问题内容: 假设我有一个数组 如何(有效地,以Python方式)找到重复的元素(即非唯一值)?在这种情况下,结果将是有效的,或者可能是有效的。 我想出了一些可行的方法: 掩蔽 设定操作 这个很可爱,但可能是非法的(实际上并不是唯一的): 直方图 排序 大熊猫 有什么我想念的吗?我不一定要寻找仅numpy的解决方案,但它必须与numpy数据类型一起使用,并且必须在中等大小的数据集(最大1000万个大

  • 我想创建一个数组,使其包含一些标识名,并且对于这些名称中的每一个,都有另一个关联的数组。我的做法是,, 执行此操作后,我得到如下结果:, 下次调用此函数时,我需要检查1-1是否存在,如果存在,我需要获取与1-1相关的列表。我该怎么做。。?如果1-1不在myArray中,我将调用其他函数。