Как получить информацию о трансляции операции после операции сокращения - PullRequest
3 голосов
/ 01 июля 2019

Я пытаюсь нормализовать некоторые данные для последних измерений.

#sample data
x = numpy.random.random((3, 1, 4, 16, 16))
x[1] = x[1]*2
x[2] = x[2]*4

Я могу получить среднее значение,

m = x.mean((-3, -2, -1))

Теперь x.shape равен (3, 1,4, 16, 16) и m.shape равно (3, 1), я хочу вычесть среднее значение из каждого образца.Пока у меня есть.

for i in range(x.shape[0]):
    for j in range(x.shape[1]):
        x[i,j] = x[i,j] - m[i,j]

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

1 Ответ

2 голосов
/ 01 июля 2019

Просто сохраните размеры с помощью keepdims arg, а затем вычтите -

m = x.mean((-3, -2, -1),keepdims=True)
x -= m

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...