У меня есть многомерная матрица с размерами (7, 3, 7, 3), и я хотел бы изменить обобщенную диагональ, в которой ось 0 и ось 2 совпадают. Эта обобщенная диагональ будет определяться как те элементы массива, чей 0-й и 2-й индексы совпадают и будут иметь форму (3, 3, 7).Изменение диагоналей в многомерных массивах numpy
Выполнение:
arr.diagonal(axis1=0, axis2=2)
я могу получить доступ к элементам диагонали, но я не могу изменить их «на месте», по крайней мере, в версии 1.8.2 NumPy.
Numpy documentation объясняет, что с версией 1.10 это возможно. Однако, поскольку я полагаюсь на других людей, использующих один и тот же код, обновление до numpy 1.10 не является вариантом. Документация также предлагает использовать .copy(), чтобы иметь портативное решение, но .copy() создаст копию массива, но это не поможет, если я хочу изменить диагонали исходного массива.
В качестве альтернативы я попытался индексировать диагональные элементы непосредственно [с помощью ввода, взятого из numpy.indices ((7, 3, 7, 3))], но без успеха.
Как я могу получить доступ к элементам обобщенной диагонали, чтобы изменить исходный массив в numpy 1.8.2?