Ответ 1
Вот один из способов:
import scipy
X = scipy.rand(9,4,1)
Y = X.repeat(4096,2)
Если X
предоставляется вам только (9,4), то
import scipy
X = scipy.rand(9,4)
Y = X.reshape(9,4,1).repeat(4096,2)
Конечно, должен быть способ сделать это... Я не могу это решить.
У меня есть (9,4) массив, и я хочу повторить его по 3-й оси 4096 раз... Так что это просто (9,4,4096), причем каждое значение из массива 9,4 просто повторяется 4096 раз по новой оси.
Если моя сомнительная трехмерная диаграмма имеет смысл (диагональ является осью z)
4| /off to 4096
3| /
2| /
1|/_ _ _ _ _ _ _ _ _
1 2 3 4 5 6 7 8 9
Приветствия
EDIT: просто для уточнения, здесь основное внимание уделяется массиву (9,4), который будет REPEATED для каждой из 4096 "строк" новой оси. Представьте себе поперечное сечение - каждый исходный (9,4) массив является одним из тех, которые находятся ниже 4096 длинного кубоида.
Вот один из способов:
import scipy
X = scipy.rand(9,4,1)
Y = X.repeat(4096,2)
Если X
предоставляется вам только (9,4), то
import scipy
X = scipy.rand(9,4)
Y = X.reshape(9,4,1).repeat(4096,2)
Вы также можете полагаться на правила вещания для повторного заполнения массива размера:
import numpy
X = numpy.random.rand(9,4)
Y = numpy.resize(X,(4096,9,4))
Если вам не нравятся упорядоченные оси, вы можете затем транспонировать:
Z = Y.transpose(1,2,0)
Вопрос супер старый, но вот еще один вариант:
import numpy as np
X = np.random.rand(9,4)
Y = np.dstack([X] * 4096)