numpy: расширение массивов вдоль новой оси?

Конечно, должен быть способ сделать это... Я не могу разработать его.

Я имею (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 длинных кубоидов.

24
задан Duncan Tait 1 March 2010 в 17:24
поделиться

2 ответа

Вот один способ:

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)
24
ответ дан 28 November 2019 в 23:39
поделиться

Вы также можете полагаться на правила широковещательной передачи, чтобы повторно заполнить массив с измененным размером:

import numpy
X = numpy.random.rand(9,4)
Y = numpy.resize(X,(4096,9,4))

Если вам не нравятся оси, упорядоченные таким образом , затем можно транспонировать:

Z = Y.transpose(1,2,0)
9
ответ дан 28 November 2019 в 23:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: