#python #numpy #audio #multidimensional-array #numpy-ndarray
#python #numpy #Аудио #многомерный массив #numpy-ndarray
Вопрос:
Я извлекаю функции из аудиоклипов. При этом для 1 клипа получается матрица 20x2
размера. У меня есть около 1000
таких клипов. Я хочу сохранить все данные в 1 массиве numpy размерности 20x2x1000
. Пожалуйста, предложите метод для того же.
Комментарии:
1.
np.array([list of clips])
даст вам массив (1000,20,2). Вы могли бы поменять оси на этом. Или используйтеnp.stack([list of clips], axis=2)
.
Ответ №1:
Функция, которую вы ищете, является 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)
Ответ №2:
Для этого есть удобная функция — 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)