Есть ли разница при создании матрицы numpy следующими способами? - PullRequest
0 голосов
/ 03 марта 2020

Когда я сегодня использую матрицу numpy, я создаю матрицу следующим образом:

theta = np.mat([1,1])
temp = np.mat(theta)

, тогда я извиняюсь следующий код, например

temp[0,0] = theta[0,0] - 0.3
print(temp, theta)

, но ответ неожиданно :

[[0 1]] [[0 1]]

но когда я попробовал другой способ:

theta = np.mat([1,1])
temp = np.mat(np.ones(a.shape))

, ответ полностью вправо

Позже я обнаружил, что на самом деле, во-первых, temp - это представление о тэте, когда при изменении значения temp тоже изменится тэта, но может ли кто-нибудь объяснить полученный мной результат? почему извините следующий код получит [[0 1]] [[0 1]]

theta = np.mat([1,1])
temp = np.mat(theta)
temp[0,0] = theta[0,0] - 0.3
print(temp, theta)

Спасибо большое !!!

1 Ответ

1 голос
/ 03 марта 2020

Начну с упоминания, что рекомендуется прекратить использование класса matrix , и он может быть удален в будущих версиях numpy.

. Причина различий как значения по умолчанию инициализируются. Что касается инициализации theta = np.mat([1,1]), по умолчанию используется тип integer , и поэтому он не обрабатывает вычитание на float так, как вы ожидаете, и является вместо того, чтобы усечь ваш результат.

При просмотре документа numpy .ones он указывает следующее:

dtype: тип данных, необязательный

требуемый тип данных для массива, например, numpy .int8. По умолчанию numpy .float64.

Таким образом, вы получаете набор значений по умолчанию с плавающей запятой при выполнении temp = np.mat(np.ones(a.shape)), который работает с тип операции вычитания с плавающей запятой, которую вы пытаетесь выполнить.

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