Заменить элементы определенного индекса оси в n-мерном массиве numpy

Учитывая n-мерный массив numpy. Теперь заданы ось и соответствующий индекс. Все элементы в этом конкретном индексе оси должны быть заменены заданным значением. Пример трехмерного массива:

>>a = np.ones((2,2,2))
array([[[ 1.,  1.],
        [ 1.,  1.]],

        [[ 1.,  1.],
        [ 1.,  1.]]])

Данная ось = 1, индекс = 0. Все элементы в этом индексе оси должны быть равны нулю.

>>a
array([[[ 0.,  0.],
        [ 1.,  1.]],

       [[ 0.,  0.],
        [ 1.,  1.]]])

person Abhay Gupta    schedule 30.05.2018    source источник


Ответы (2)


Используйте 1_:

a.swapaxes(0, axis)[index] = value

Пример:

>>> import numpy as np
>>> a = np.zeros((2,3,4))
>>> a.swapaxes(0, 1)[2] = 3
>>> a
array([[[0., 0., 0., 0.],
        [0., 0., 0., 0.],
        [3., 3., 3., 3.]],

       [[0., 0., 0., 0.],
        [0., 0., 0., 0.],
        [3., 3., 3., 3.]]])
person Paul Panzer    schedule 30.05.2018

вы можете сделать a[:,0,:] = 0 и получить результат, где в a[:,0,:] вы выбираете индекс = 0 оси = 1 и устанавливаете значение 0 по всей другой оси

person Ben.T    schedule 30.05.2018
comment
В моем случае ось и индекс вычисляются программой. Чтобы ваш метод работал, нужно знать их заранее. - person Abhay Gupta; 30.05.2018