How to replicate array to specific length array

前端 未结 4 1123
半阙折子戏
半阙折子戏 2020-12-03 12:39

I want replicate a small array to specific length array

Example:

var = [22,33,44,55] # ==> len(var) = 4
n = 13

The new array tha

相关标签:
4条回答
  • 2020-12-03 12:56

    There are better ways to replicate the array, for example you could simply use np.resize:

    Return a new array with the specified shape.

    If the new array is larger than the original array, then the new array is filled with repeated copies of a. [...]

    >>> import numpy as np
    >>> var = [22,33,44,55]
    >>> n = 13
    >>> np.resize(var, n)
    array([22, 33, 44, 55, 22, 33, 44, 55, 22, 33, 44, 55, 22])
    
    0 讨论(0)
  • 2020-12-03 12:59

    First of all, you don't get an error, but a warning, that var_new[di] = var is deprecated if var_new[di] has dimensions that do not match var.

    Second, the error message tells what to do: use

    var_new[di].flat = var
    

    and you do not get a warning any more and it is guaranteed to work.


    Another, easy way to do this if numpy is not needed is to just use itertools:

    >>> import itertools as it
    >>> var = [22, 33, 44, 55]
    >>> list(it.islice(it.cycle(var), 13))
    [22, 33, 44, 55, 22, 33, 44, 55, 22, 33, 44, 55, 22]
    
    0 讨论(0)
  • 2020-12-03 13:09

    Copy the array (called lists in python) with [:] because they are mutable. The python short cut is then just to multiply the copy and add one more element.

    >>> var = [22, 33, 44, 55]
    >>> n = 3
    >>> newlist = var[:]*n + var[:1]
    

    gives the 13 elements you want.

    0 讨论(0)
  • 2020-12-03 13:13
    var = [22,33,44,55]
    n = 13
    

    Repeating a list (or any other iterable) can be done without numpy, using itertools's cycle() and islice() functions

    from itertools import cycle, islice
    var_new = list(islice(cycle(var),0,n)
    
    0 讨论(0)
提交回复
热议问题