Как я могу эффективно расширить одно измерение многомерного массива? - PullRequest
1 голос
/ 26 июня 2019

У меня есть два массива:

data.shape -> (100, 81, 121, 6, 3)
(n_samples, широта, долгота, объекты, уровень)

label.shape -> (100, 2)
(n_samples, target_value)

Все, что я хочу, это добавить два вектора меток в 4-мерное измерение данных.Поэтому моя цель - получить новый массив, подобный этому:
result.shape -> (100, 81, 121, 8, 3).

Я ищу эффективное решение с numpy, xarray, pandas и т. д. Но не найти ни одного.Я надеюсь, что кто-то может мне помочь.

1 Ответ

2 голосов
/ 26 июня 2019

Используйте np.broadcast_to для трансляции меньшего массива в форму большего массива, а затем соедините его с осью конкатенации -

In [215]: data = np.random.rand(100,81,121,6,3)

In [216]: labels = np.random.rand(100,2)

In [218]: labels_ext = np.broadcast_to(labels[:,None,None,:,None],(100,81,121,2,3))

In [219]: np.concatenate((data,labels_ext),axis=3).shape
Out[219]: (100, 81, 121, 8, 3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...