Numpy добавляет несколько разных массивов np.array в одну ось существующего массива np.array - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть

x = np.array([[1, 5], [2, 8]])
x.shape

Форма x (2,2)

Как мне создать новый массив y, который будет содержать 40 различных массивов одинаковой формы x?Желаемый массив y должен иметь размер (40,2,2)

Когда я пытаюсь y = np.expand_dims (x, axis = 1), он дает мне форму (2, 1, 2).Я не понимаю, как numpy добавлять вещи в разных осях ... Спасибо!

Ответы [ 3 ]

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

Поскольку вы написали, что вам нужен массив y более высокой размерности, вы можете просто инициализировать массив нулей как

y = np.zeros((40, x.shape[0],x.shape[1]))
print (y.shape)
# (40, 2, 2)

, где вы указали размер массива x.

РЕДАКТИРОВАТЬ

На основе вашего комментария ниже, вот ответ.Вы можете использовать dstack , где вы предоставляете массивы, которые должны быть сложены здесь как кортеж (x, z), и он укладывает их вдоль третьей оси.

x = np.array([[1, 5], [2, 8]])  
z = np.array([[11, 55], [22, 88]]) 
y = np.dstack((x,z))
y.shape
# (2, 2, 2)

РЕДАКТИРОВАТЬ 2

Чтобы сложить его спереди, вы можете использовать swapaxes поменять местами первую и третью оси.

y = np.dstack((x,z,x)).swapaxes(0,2)
y.shape
# (3, 2, 2)
0 голосов
/ 21 декабря 2018

Похоже, что вы хотите объединить несколько массивов вместе в новом измерении:

import numpy as np
x = np.array([[1, 5], [2, 8]])
y = np.array([[11, 55], [22, 88]])

z = np.array([x, y, x])
print(z.shape)  # (3, 2, 2)
0 голосов
/ 21 декабря 2018

Попробуйте:

import numpy as np

x = np.array([[1, 5], [2, 8]])

y = np.asanyarray([x] * 40)

print(y.shape)

Форма вывода будет (40, 2, 2).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...