Запись в многомерные массивы по индексу - PullRequest
0 голосов
/ 18 февраля 2019

Мне нужно записать обработанные данные в кэш многомерного массива, но я не знаю, как это легко сделать.

Простой пример:

x = np.random.rand(5,2,5,3)
ind = np.array([True,True,False,True,False])
dat = np.random.rand(3,3,3)

Способ, которым яхочу, чтобы оно было:

x[ind,-1][:,ind] = dat

Но метод индексации создает копию, а данные фактически не записываются. Я ищу, есть ли простой и прямой способ сделать это, спасибо.

1 Ответ

0 голосов
/ 18 февраля 2019

Использование np.ix_ -

x[np.ix_(ind,[-1],ind)] = dat[:,None]

Еще один в две строки снова с np.ix_ -

r,c = np.ix_(ind,ind)
x[r,-1,c] = dat

Еще один с использованием целочисленных индексовмаска -

indx = np.flatnonzero(ind)
x[indx[:,None],-1,indx] = dat
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...