Конечно, должен быть способ сделать это... Я не могу разработать его.
Я имею (9,4) массив, и я хочу повторить его вдоль 3-й оси 4096 раз... Таким образом, это становится просто (9,4,4096), с каждым значением от этих 9,4 массивов просто повторил 4096 раз вниз новую ось.
Если моя сомнительная 3D схема имеет смысл (диагональ является осью z),
4| /off to 4096
3| /
2| /
1|/_ _ _ _ _ _ _ _ _
1 2 3 4 5 6 7 8 9
Аплодисменты
Править: Просто для уточнения акцент здесь находится на (9,4) массив, ПОВТОРЯЕМЫЙ для каждой из 4 096 'строк' новой оси. Вообразите поперечное сечение - каждый исходный (9,4) массив является одним из тех вниз 4 096 длинных кубоидов.
Вот один способ:
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)