Как объединить несколько двумерных массивов в трехмерный массив - PullRequest
0 голосов
/ 17 марта 2019

Я извлекаю функции из аудиоклипов. При этом для 1 клипа получается матрица размером 20x2. У меня есть около 1000 таких клипов. Я хочу хранить все данные в 1 массиве размерности 20x2x1000. Пожалуйста, предложите метод для того же.

Ответы [ 2 ]

0 голосов
/ 18 марта 2019

Для этого есть удобная функция: numpy.dstack .Ниже приведен фрагмент кода для глубинного размещения массивов:

# whatever the number of arrays that you have
In [4]: tuple_of_arrs = tuple(np.random.randn(20, 2) for _ in range(10))

# stack each of the arrays along third axis
In [7]: depth_stacked = np.dstack(tuple_of_arrs)

In [8]: depth_stacked.shape
Out[8]: (20, 2, 10)
0 голосов
/ 17 марта 2019

Функция, которую вы ищете: np.stack. Он используется для укладки нескольких массивов NumPy вдоль новой оси.

import numpy as np

# Generate 1000 features
original_features = [np.random.rand(20, 2) for i in range(1000)]

# Stack them into one array
stacked_features = np.stack(original_features, axis=2)
assert stacked_features.shape == (20, 2, 1000)
...