Как изменить Numpy Array в Python - PullRequest
       24

Как изменить Numpy Array в Python

0 голосов
/ 04 декабря 2018

У меня есть numpy array изображений с формой (5879,).Внутри каждого индекса массива я имею пиксели изображения с формой (640,640,3).Я хочу изменить весь массив таким образом, чтобы форма массива numpy стала (5879,640,640,3).

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

пожалуйста, проверьте, работает ли приведенный ниже код у вас или нет

import numpy as np

b = np.array([5879])
b.shape

output (1,)

a = np.array([[640],[640],[3]])
a = a.reshape((a.shape[0], 1))
a.shape

output (3, 1)

c = np.concatenate((a,b[:,None]),axis=0)
c.shape

Output:
(4, 1) 

np.concatenate((a,b[:,None]),axis=0)

output 
array([[ 640],
   [ 640],
   [   3],
   [5879]])
0 голосов
/ 04 декабря 2018

Вы хотите сложить изображения вдоль первой оси в массив 4D.Тем не менее, ваши изображения все 3D.Итак, сначала вам нужно добавить начальное одноэлементное измерение ко всем изображениям, а затем объединить их вдоль этой оси:

imgs = [i_[None, ...] for i_ in orig_images]  # add singleton dim to all images
x = np.concatenate(imgs, axis=0)  # stack along the first axis

Редактировать:
На основании комментария Mad Phyiscist кажется, что использование np.stack более уместно здесь: np.stack заботится о добавлении ведущего синглтонного измерения для вас:

x = np.stack(orig_images, axis=0)
...