Changing values of array in 2nd dimension

I have this array:

x = numpy.array([[[1, 2, 3]], 
             [[4, 5, 6]],
             [[7,8,9]]])

I want to replace the elements 3,6 and 9 with some other numbers. I tried to split the array to

y=x[:,:,:2]

and than add the array new at the end of array y with

new = numpy.array([[[10]], 
             [[11]],
             [[12]]])

final_arr= numpy.insert(y,2,new, axis=2)

But it adds in each line the new-array.

Upvotes: 1

Views: 320

Answers (1)

Michael
Michael

Reputation: 2367

You need to add it to the third dimension, so just create an array with the corresponding shape. You can do easily with the use of numpy.newaxis, as shown below:

import numpy as np

x = np.array(
    [
        [[1, 2, 3]], 
        [[4, 5, 6]],
        [[7,8,9]]
    ])
x[:, :, -1] = np.array([10, 11, 12])[:, np.newaxis]
x

Output

array([[[ 1,  2, 10]],

       [[ 4,  5, 11]],

       [[ 7,  8, 12]]])

Cheers!

Upvotes: 1

Related Questions