Append list array in for loop

add elements to array in loop python
python build array in loop
matlab append to array in loop
create new list in for loop python
numpy dynamic array
python add to list in loop
for loop add to array python
python append to list

I have a masked array Xpos:

masked_array(
  data=[[--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [--, --, --, --, --, --, --, --, --, --],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]],
 mask=[[ True,  True,  True, ...,  True,  True,  True],
    [ True,  True,  True, ...,  True,  True,  True],
    [ True,  True,  True, ...,  True,  True,  True],
    ...,
    [False, False, False, ..., False, False, False],
    [False, False, False, ..., False, False, False],
    [False, False, False, ..., False, False, False]],
fill_value=9.96921e+36,
dtype=float32)

And when I ask Xpos[3000,:] this is the output:

[-3.802131175994873 -3.8107831478118896 -3.7940280437469482
 -3.838264226913452 -3.8027470111846924 -3.766021251678467
 -3.8610005378723145 -3.8038835525512695 -3.7840664386749268
 -3.7463834285736084]

So a bunch of masked values, a bunch of numbers and a bunch of zeros. I want a new array with no masked values and no zeros, keeping the same structure of the array. The code I am using is this:

Xpos1=[]
for i in range (0,len(Xpos)):
    if Xpos[i,0]!=0: 
       Xpos1=np.append(Xpos1,Xpos[i,:] ) 

BUT this gives me one long array with values, and does not retain the original structure like Xpos: [[a,b,c,],[a,b,c,],[a,b,c,]...] with abc numbers. So for output, I would like something likeXpos1=[[a,b,c,],[a,b,c,],[a,b,c,]...]with abc numbers that are not all zero.

How do I improve my coding to keep it a list of arrays (forgive me if I'm using the wrong terminology)?

I'm not an expert on masked arrays but this works:

# create example
>>> a = np.arange(30).reshape(10, 3)
>>> a[[0,7,8]] = 0
>>> a = np.ma.MaskedArray(a, np.isin(a // 3, (2,3)))
>>> 
>>> a
masked_array(
  data=[[0, 0, 0],
        [3, 4, 5],
        [--, --, --],
        [--, --, --],
        [12, 13, 14],
        [15, 16, 17],
        [18, 19, 20],
        [0, 0, 0],
        [0, 0, 0],
        [27, 28, 29]],
  mask=[[False, False, False],
        [False, False, False],
        [ True,  True,  True],
        [ True,  True,  True],
        [False, False, False],
        [False, False, False],
        [False, False, False],
        [False, False, False],
        [False, False, False],
        [False, False, False]],
  fill_value=999999)
>>> 
# cut all rows that have at least one masked or all zero entries
>>> compressed = a.data[~np.any(a.mask, axis=1) & np.any(a.data!=0, axis=1)]
>>> compressed
array([[ 3,  4,  5],
       [12, 13, 14],
       [15, 16, 17],
       [18, 19, 20],
       [27, 28, 29]])

How to Add an Item to List Using Append() Command, We will use For loop to append groups of element to list. We made empty list numbers and used for loop to append numbers in range from 0 to 9, so for loop in frist working append 0 and check number 2 in range or not, if in range append it and so on until reaching number 9, which add it and for loop stop working. While the loop is open, 'disp(Ai)' prints the values correctly. However, if I attempt to use or print the variable after the final closing 'end', I only get the one final value of Ai. What I would like is an array of all values that I can reuse for future operations later in the code.

As list literal it could look like this:

lst1 = [y for y in [x for x in Xpos] if y[0] != "?" if y[0] != 0]
print(lst1)

Giving you:

[[1, 2, 3], [2, 3, 4]]

Or as written out code:

#!/usr/bin/env python

Xpos = [["?", "?", "?"],
        ["?", "?", "?"],
        [1, 2, 3],
        [2, 3, 4],
        [0, 0, 0],
        [0, 0, 0]]

mask = "?" # may replace mask with None.
XPos2 = []
for subarray in Xpos:
    for element in subarray:
        if element == mask or element == 0:
            break
        else:    
            XPos2.append(subarray)
            break

Will give you:

[[1, 2, 3],[2, 3, 4]]

The proper way to create a numpy array inside a for-loop, The proper way to create a numpy array inside a for-loop. Initialize an empty array to store the results in. Create a for-loop looping over the lines/columns of the data array Inside the loop: Do the computation. Append the result array. The 'return' is also inside the for loop which is less than ideal, you want it to be returned after the loop has been exhausted and all suitable elements have been appended. a = [100, 1, 10, 2, 3, 5, 8, 13, 21, 34, 55, 98] def new_list(x): new = [] for item in range(len(x)): if x[item] < 5 and x[item] > 0: new.append(item) return new print(new_list(a))

Try something like this:

Xpos=[["","",""],
  ["","",""],
  [1,2,3],
  [2,3,4],
  [0,0,0],
  [0,0,0]]

Xpos1 = []
for inner_list in Xpos:
    if 0 in inner_list or "" in inner_list:
        pass
    else:
        Xpos1.append(inner_list)

print Xpos1

basically you can check for the values that you don't want and then only append the lists that you want to the final list.

How do I properly append to an array within a loop?, I feel like it is not creating the array properly, and perhaps I need to assign the value of Ai to another variable as the loop iterates, but I can't seem  We made empty list numbers and used for loop to append numbers in range from 0 to 9, so for loop in frist working append 0 and check number 2 in range or not, if in range append it and so on until reaching number 9, which add it and for loop stop working. 5) Adding element to a list with while loop

Loops and lists, What adding two lists means is up to the list object to define, and not surprisingly, addition of two lists is defined as appending the second list to the first. The result​  Your next problem is that np.append() returns a copy of the array with the item appended, rather than appending in place. You store this result in array, but array will be assigned the next item from the list on the next iteration, and the modified array will be lost (except for the last one, of course, which will be in array at the end of the loop). So you will want to store each modified array back into the list.

Python NumPy array tutorial, After adding, we get 20, and assign that value to the 0th item of the list. Run the program to see the result. Common programming error: List index out of range. If​  I am trying to append numbers from a generator to an empty list using a single line for loop but it returns None.I understand it can be done using a for loop with 2 lines but I was wondering what I am missing. i.e.,

Python lists - working with lists in Python, Add items to the end of an array with .push(). var items = ['Hat', 'Ball', 'Shoes']; items.push('Socks','Scarf'); // items is now ['Hat', 'Ball', 'Shoes', 'Socks', 'Scarf']  Java ArrayList for loop for each example shows how to iterate ArrayList using for loop and for each loop in Java. It also shows how to use the ArrayList size to loop through the elements of ArrayList.

Comments
  • So with I want a new array with no masked values and no zeros, keeping the same structure of the array in mind, what is the expected output?
  • What value is used as mask? "-" is invalid syntax.
  • @What it's empty values that are masked.
  • @Jellyse then use my answer and instead of mask = "?" it should be mask = None
  • Why are there no "," for the values you posted?
  • So the question actually missing the numpy tag?
  • @What The masked_array looks distinctly numpy to me.
  • My original array is much bigger, and for some reason, every seventh number is deleted when I use this code. So that would be '[[a b c d e -- g],[a b c d e -- g],[a b c d e -- g],...]'.
  • @Jellyse could you update your question with bigger data sample?