当前位置: 首页 > 面试题库 >

获取一个numpy数组的所有子序列

濮阳默
2023-03-14
问题内容

给定一个大小为numpy的数组n和一个整数,m我想生成m该数组的所有顺序长度子序列,最好是二维数组。

例:

>>> subsequences(arange(10), 4)

array([[0, 1, 2, 3, 4, 5, 6],
       [1, 2, 3, 4, 5, 6, 7],
       [2, 3, 4, 5, 6, 7, 8],
       [3, 4, 5, 6, 7, 8, 9]])

我能想到的最好方法是

def subsequences(arr, m):
    n = arr.size
    # Create array of indices, essentially solution for "arange" input
    indices = cumsum(vstack((arange(n - m + 1), ones((m-1, n - m + 1), int))), 0)
    return arr[indices]

我是否缺少更好的(最好是内置的)功能?


问题答案:

这是一种非常快速且内存有效的方法,仅是对原始数组的“查看”:

from numpy.lib.stride_tricks import as_strided

def subsequences(arr, m):
    n = arr.size - m + 1
    s = arr.itemsize
    return as_strided(arr, shape=(m,n), strides=(s,s))

np.copy如果需要写入此数组,则应先做一个步骤,否则,您将修改原始数组和“子序列”数组中的相应条目。

此处更多信息:https :
//stackoverflow.com/a/4924433/2379410



 类似资料:
  • 问题内容: 现在说我有一个numpy数组,定义为 现在,我想要一个包含缺失值的所有索引的列表,在这种情况下。 有什么办法可以做到吗? 问题答案: np.isnan与np.argwhere结合 输出:

  • 问题内容: 给定一个PHP字符串数组,例如: 如何生成此数组元素的所有可能排列?即: 问题答案: function pc_permute($items, $perms = array()) { if (empty($items)) { echo join(‘ ‘, $perms) . “ “; } else { for ($i = count($items) - 1; $i >= 0; –$i)

  • 我想获得表中所有的所有内部文本的数组。 以下工作 只是想知道在直接jQuery中是否有更好的方法(wo必须转换为数组,然后使用JS方法)

  • 问题内容: 我试图在尝试对6参数函数进行任何复杂操作之前,遍历6参数函数的参数空间,以研究其数值行为,因此,我正在寻找一种有效的方法来执行此操作。 我的函数将6-dim numpy数组中给出的浮点值作为输入。我最初尝试做的是: 首先,我创建了一个函数,该函数接受2个数组并生成一个包含两个数组中值的所有组合的数组: 然后,我曾经将其应用于同一数组的m个副本: 最后,我这样评估我的功能: 这工作,但它

  • 问题内容: 说我有一个序列,我想从中选择随机的子序列,每个序列都有长度,并存储在矩阵中。有没有比这更麻木的方式了 问题答案: 我们可以利用基础来有效地提取补丁,就像这样-

  • 问题内容: 有没有办法一次获取NumPy数组中几个元素的索引? 例如 我想找到in中每个元素的索引,即:。 我发现我使用的解决方案有点冗长: 输出: 问题答案: 您可以使用和(或为此): 这对于您的示例数组很好用,但是通常返回的索引数组不遵循中的值顺序。这可能是个问题,具体取决于您下一步要做什么。 在这种情况下,更好的答案是一个@Jaime给出了这里,使用: 返回值在中出现的索引。例如: