Lets say your numpy array is:
A = [1,1,2,3,4]
You can simply do:
A + .1
to add a number to tha
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] + (0 if (i%2 == 0) else .1) for i in range(len(A))]
>>> A
[1, 1.1, 2, 3.1, 4]
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.])
In addition to previous answers, to modify numbers with odd indices you should use A[1::2] instead of A[::2]
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.