Я экспериментировал с векторизацией своей функции и обнаружил странную ошибку в моем коде, которую мне не удалось выяснить.
Вот этот массивный вопрос (https://filebin.net/c14dcklwakrv1hw8)
import numpy as np
example = np.load("example_array.npy") #Shape (2, 5, 5)
Проблема, которую я пытался решить, состояла в том, чтобы нормализовать значения в каждой строке так, чтобы они суммировались в 1, за исключением, конечно, строк, которые целиком равны 0. Так как при разделении numpy есть возможность пропустить нули при делении функции, которую я использовал, был
f = lambda x: np.divide(x, np.sum(x, axis=1)[:, np.newaxis], where=np.sum(x, axis=1)[:, np.newaxis]!=0)
Что происходит, однако, это то, что значение f(example[1])
изменяется в зависимости от того, запущен ли example[1]
или example[0]
в терминале python перед ним. Поэтому, если вы запустите example[0]
, введите f(example[1])
, последняя строка example[0]
заменит первую строку ответа.
Выполнение этого можно увидеть здесь https://imgur.com/lzyHV8n
Python версия - 3.6.6, numpy - 1.15.3
Редактировать: - Добавление 1 ко всем элементам матрицы и повторение одной и той же операции без условия where в np.divide работает без проблем. Я думаю, что это источник ошибки, но я не знаю, почему это происходит