Home > Blockchain >  stacking datafram in numpy arrays in a loop
stacking datafram in numpy arrays in a loop

Time:08-12

I have a dataframe like this,

pd.DataFrame({'a': [1,22,34],
              'b': [3,49,65]})

and I want to add 1 to all arrays of this dataframe and store it in the 3rd dimension of a numpy array like the following figure. I want to do this in a for loop because my calculations is more than just adding one to arrays in reality. Any suggestion for a minimal implementation of this?

enter image description here

CodePudding user response:

Another possible solution:

np.array([df.apply(lambda x: x y) for y in np.arange(2)])

Output:

array([[[ 1,  3],
        [22, 49],
        [34, 65]],

       [[ 2,  4],
        [23, 50],
        [35, 66]]])

CodePudding user response:

df = pd.DataFrame({'a': [1,22,34],'b': [3,49,65]})
array_2d = df.values
array_3d = np.repeat(array_2d[np.newaxis, :, :], 2, axis=0)
# loop
for i in range(2):
    array_3d[i] = array_3d[i]   i

array_3d
###
[[[ 1  3]
  [22 49]
  [34 65]]

 [[ 2  4]
  [23 50]
  [35 66]]]


Here's @Michael Szczesny way,

(enter image description here
you only have to choose how many layers you want, for example, 3 layer

df.values   np.arange(3)[:,None,None]
###
array([[[ 1,  3],
        [22, 49],
        [34, 65]],

       [[ 2,  4],
        [23, 50],
        [35, 66]],

       [[ 3,  5],
        [24, 51],
        [36, 67]]])
  • Related