Skip to content Skip to sidebar Skip to footer

Add A Number To All Odd Or Even Indexed Elements In Numpy Array Without Loops

Lets say your numpy array is: A = [1,1,2,3,4] You can simply do: A + .1 to add a number to that every element numpy array I am looking for a way to add a number to just the

Solution 1:

In [43]: A = np.array([1,1,2,3,4], dtype = 'float')

In [44]: A[::2]  += 0.1

In [45]: A
Out[45]: array([ 1.1,  1. ,  2.1,  3. ,  4.1])

Note that this modifies A. If you wish to leave A unmodified, copy A first:

In [46]: A = np.array([1,1,2,3,4], dtype = 'float')

In [47]: B = A.copy()

In [48]: B[::2]  += 0.1

In [49]: B
Out[49]: array([ 1.1,  1. ,  2.1,  3. ,  4.1])

In [50]: A
Out[50]: array([ 1.,  1.,  2.,  3.,  4.])

Solution 2:

In addition to previous answers, to modify numbers with odd indices you should use A[1::2] instead of A[::2]

Solution 3:

Something with list comprehension could work.

A = [1,1,2,3,4]
A = [A[i] + (0 if (i%2 == 0) else .1) for i in range(len(A))]

Just quick and dirty with a ternary. Might not work in your version of Python, can't remember which versions it works with.


Checked in Python 2.7.3 and Python 3.2.3, output is the same:

>>>A = [1,1,2,3,4]>>>A
[1, 1, 2, 3, 4]

>>>A = [A[i] + (0if (i%2 == 0) else.1) for i inrange(len(A))]>>>A
[1, 1.1, 2, 3.1, 4]

Solution 4:

If the list didn't start with two 1 and you wanted to add to all even numbers, you could use:

A[1::2] += 0.1

or

A[::-2][::-1] += 0.1

In the latter case, [::-1] is used to reverse the array back to normal order.

Post a Comment for "Add A Number To All Odd Or Even Indexed Elements In Numpy Array Without Loops"