I have the array
vAgarch and I am trying to extract each element from that, so I have the following code now:
vAgarch = [0.05, 0.03, 0.04, 0.05, 0.03, 0.04] vAgarch = np.array(vAgarch) # Extract each element from array vAgarch dA1garch = np.fabs(vAgarch) dA2garch = np.fabs(vAgarch) dA3garch = np.fabs(vAgarch) dA4garch = np.fabs(vAgarch) dA5garch = np.fabs(vAgarch) dA6garch = np.fabs(vAgarch)
However, this could be easier right? My array will consist of 40 elements later on and I think this code can be simplified with a for loop. I tried several for loops, but so far I have no success. Is there someone who can help me with simplifying this code?pythonarraysloopsnumpy
It is possible to use a loop if you don't use separate variable names for dAgarch.
vAgarch= [0.05, 0.03, 0.04, 0.05, 0.03, 0.04] dAgarch=np.zeros(vAgarch.size) vAgarch= np.array(vAgarch) # Extract each element from array vAgarch count =0 while(count<dAgarch.size): dAgarch[count]= np.fabs(vAgarch[count]) count+=1
Or as you ask for loop
for count in range(0,dAgarch.size): dAgarch[count]= np.fabs(vAgarch[count])
There is no need to use a for loop，
numpy fabs parameters can be
array_like, so you can just pass list to it. As below code(I have change some elements in
vAgarch to minus):
def test_s(): vAgarch = [-0.05, 0.03, -0.04, 0.05, 0.03, 0.04] print vAgarch # [-0.05, 0.03, -0.04, 0.05, 0.03, 0.04] # equivalent to a for loop arr2 = np.fabs(vAgarch) print arr2 # arr2 is a new array, all its elements is plus # [ 0.05 0.03 0.04 0.05 0.03 0.04] print vAgarch # -0.05 print arr2 # 0.05
you can also see tutorial in https://docs.scipy.org/doc/numpy/reference/generated/numpy.fabs.html.
Or if you use pycharm,you can go to the function definition for example:
Is there a specific reason you want everything in a standalone variable? I may be missing your point, but I'll propose something else if I'm understanding what you want.
As Jayhello mentioned, you can supply your original numpy array to
np.fabs() directly. You stated in a comment that you did not want a list as you wanted to put these values in another list as well, but this is also possible with lists, using
np.append(). Let's say the array that you want to add them to is
master_array, you could do something like this:
import numpy as np # other code here new_arr = np.fabs(vAgarch) master_array = np.append(master_array, new_arr)
This will append each of the elements from the vAgarch list to the other list after calling
fabs() on them. If you'd like to add specific elements of the array only, you can just reference them by index (i.e.
new_arr) rather than creating separate variables for every single element.
arr = np.fabs(vAgarch)
In numpy almost all the function parameter can be
array_like(list or numpy array), and returns array.
So there is no need to use for loop.I recommend you to learn more about numpy array operation.