Home > Enterprise >  numpy append in a for loop with different sizes
numpy append in a for loop with different sizes

Time:12-24

I have a for loop but where i has changes by 2 and i want to save a value in a numpy array in each iteration that that changes by 1.

n = 8 #steps

# random sequence
rand_seq = np.zeros(n-1)

for i in range(0, (n-1)*2, 2):
    
    curr_state= i 3
  

I want to get curr_state outside the loop in the rand_seq array (seven values).

can you help me with that?

thanks a lot

CodePudding user response:

A much simpler version (if I understand the question correctly) would be:

np.arange(3, 15 1, 2)

where 3 = start, 15 = stop, 2 = step size.

In general, when using numpy try to avoid adding elements in a for loop as this is inefficient. I would suggest checking out the documentation of np.arange(), np.array() and np.zeros() as in my experience, these will solve 90% of array - creation issues.

CodePudding user response:

A straight forward list iteration:

In [313]: alist = []
     ...: for i in range(0,(8-1)*2,2):
     ...:     alist.append(i 3)
     ...: 
In [314]: alist
Out[314]: [3, 5, 7, 9, 11, 13, 15]

or cast as a list comprehension:

In [315]: [i 3 for i in range(0,(8-1)*2,2)]
Out[315]: [3, 5, 7, 9, 11, 13, 15]

Or if you make an array with the same range parameters:

In [316]: arr = np.arange(0,(8-1)*2,2)
In [317]: arr
Out[317]: array([ 0,  2,  4,  6,  8, 10, 12])

you can add the 3 with one simple expression:

In [318]: arr   3
Out[318]: array([ 3,  5,  7,  9, 11, 13, 15])

With lists, iteration and comprehensions are great. With numpy you should try to make an array, such as with arange, and modify that with whole-array methods (not with iterations).

  • Related