Home > OS >  Tranform a 2x2 array into a 2x2x2 arrays with numpy
Tranform a 2x2 array into a 2x2x2 arrays with numpy

Time:11-16

hello I use numpy in python to do image processing, I wanted to switch the image to black and white and for that I did the calculation in each cell to see the luminosity but if i want to show it i have to transform a 2d array into 2d array with 3 time the same value

for exemple i have this

a = np.array([[255,0][0,255]])
#into
b = np.array([[[255,255,255],[0,0,0]],[[0,0,0],[255,255,255]]])

I've been searching for a while but i don't find anything ps: sorry if i have made some mistake with my English i'm not

CodePudding user response:

You'll want to us an explicit broadcast: https://numpy.org/doc/stable/reference/generated/numpy.broadcast_to.html#numpy.broadcast_to

b = np.broadcast_to(a[..., np.newaxis], (2, 2, 3))

Usually you don't need to do it explicitly, maybe try and see if just a[..., np.newaxis] and the standard broadcasting rules are enough.

CodePudding user response:

Another way to do it

np.einsum('ij,k->ijk', a, [1,1,1])

It's a way to create a 3 dimensional array (hence the ijk), from a 2d array (ij) and a 1d array (k). Whose result is for all i,j,k being indices of a and of [1,1,1], the 3d matrix of a[i,j]×[1,1,1][k].

  • Related