Список массивов numpy в один массив numpy

Скажем, у меня есть массивы N numpy, каждый из которых имеет размер (x, y, z), где y и z одинаковы для всех, но x различается для каждого. Как бы я объединил их в массив numpy размера (w, y, z), где w - сумма всех x.

Или, для числового примера: у меня есть список из 3 массивов numpy с размерами (14, 32, 32), (7, 32, 32), (50, 32, 32). Как мне эффективно превратить их в массив numpy размером (71, 32, 32)?


person Blubberguy22    schedule 30.04.2020    source источник


Ответы (2)


Вы можете просто соединить их по первой оси. Если ваши 3 массива numpy названы x1, x2 и x3, ваш новый массив будет определен как x_combined = np.concatenate((x1,x2,x3),axis=0)

person WVJoe    schedule 30.04.2020
comment
Я уже пробовал это, но получаю сообщение об ошибке, что входные массивы должны иметь одинаковые размеры. Возможно, так устроен мой список массивов, так что я проверю это еще раз. - person Blubberguy22; 01.05.2020
comment
Это были данные. Я работаю с изображениями, и по какой-то причине один набор не загрузился, поэтому он имел форму (0,). - person Blubberguy22; 01.05.2020
comment
Если другие размеры совпадают, этот метод должен работать без проблем. Для оси, вдоль которой вы выполняете конкатенацию, входные массивы могут иметь любую длину, если остальные имеют одинаковую длину. - person WVJoe; 01.05.2020
comment
Я удалил этот набор изображений (который по какой-то причине не загружается), и проблема была решена. Я думал, что так делаю, поскольку уже пробовал оба этих предложения, и из-за этого они не сработали. - person Blubberguy22; 01.05.2020

Попробуйте np.vstack

a, b , c = np.ones((14, 32, 32)), np.ones((7, 32, 32)), np.ones((50, 32, 32))

out = np.vstack([a,b,c])

In [119]: a.shape
Out[119]: (14, 32, 32)

In [120]: b.shape
Out[120]: (7, 32, 32)

In [121]: c.shape
Out[121]: (50, 32, 32)

In [122]: out.shape
Out[122]: (71, 32, 32)
person Andy L.    schedule 01.05.2020
comment
Я уже пробовал это, но получаю сообщение об ошибке, что входные массивы должны иметь одинаковые размеры. Возможно, так устроен мой список массивов, так что я проверю это еще раз. - person Blubberguy22; 01.05.2020
comment
дважды проверьте команду shape, как в моем ответе. Эта ошибка указывает на то, что один из ваших массивов не соответствует обоим измерениям w, z. - person Andy L.; 01.05.2020
comment
Это были данные. Я работаю с изображениями, и по какой-то причине один набор не загрузился, поэтому он имел форму (0,). - person Blubberguy22; 01.05.2020