python - Flatten numpy array without double for loop -
i have 2-d matrix. purposes of example, let's random matrix
>>> = np.random.randn(5, 7) >>> array([[-0.37279322, 0.28619523, -0.05309901, 0.26010327, 0.1846693 , 0.33112176, 0.75814911], [ 1.57001151, -0.86831693, -0.20576395, 1.46450855, -0.01631132, 3.02790403, -0.65313017], [ 0.2362675 , -1.52190536, 0.04687194, 2.01618876, 0.03780218, -0.53041096, -0.30104844], [-0.5504834 , 1.04286156, 1.12863785, 0.89583492, 0.28607363, 1.42858007, 0.28582572], [-0.768464 , 0.31952554, 0.81129581, 0.26239668, -0.23242878, -1.01584339, 0.39573906]])
and 2 vectors of labels:
label_y = np.array([23, 984, 123, 9321, 121238]) label_x = np.array([121, 31312, 9123131, 1111, 1231441, 1929313, 192312312361])
i'd flatten elements of , output label indeces , values. example:
23,121,-0.37279322 23,31312,0.28619523 23,9123131,-0.05309901 23,1111,0.26010327 23,1231441,0.1846693 23,1929313,0.33112176 23,192312312361,0.75814911 984,121,... ...
is there easy way of doing in numpy without loops?
use np.meshgrid
create 2d
meshes corresponding x
, y
labels , stack them columns alongwith 2d
input array a
, -
x,y = np.meshgrid(label_x,label_y) out = np.column_stack((y.ravel(),x.ravel(),a.ravel()))
Comments
Post a Comment