Изменение функции @ Mercury:
In [398]: def stack():
...: alist = []
...: dim = (299,299)
...: for i in range(5):
...: img_a = np.random.randn(dim[0],dim[1],3)
...: img_p = np.random.randn(dim[0],dim[1],3)
...: img_n = np.random.randn(dim[0],dim[1],3)
...: alist.append([img_a, img_p, img_n])
...: return np.array(alist)
In [399]: stack().shape
Out[399]: (5, 3, 299, 299, 3)
alist
- это вложенный (5,3) список, содержащий (299 299,3) массивов. Превратившись в массив, он становится 5d.
Мы можем просто перенести это, stack().transpose(1,0,2,3,4)
. Но np.stack
является объединенной версией, которая позволяет нам указать new
ось:
In [400]: def stack():
...: alist = []
...: dim = (299,299)
...: for i in range(5):
...: img_a = np.random.randn(dim[0],dim[1],3)
...: img_p = np.random.randn(dim[0],dim[1],3)
...: img_n = np.random.randn(dim[0],dim[1],3)
...: alist.append([img_a, img_p, img_n])
...: return np.stack(alist, axis=1)
...:
In [401]: stack().shape
Out[401]: (3, 5, 299, 299, 3)