#python #numpy
#python #numpy
Вопрос:
короче говоря, я пытаюсь создать 2-мерный массив с помощью np.eye, где 0 и диагональ имеют пользовательские значения.
Я рассчитал диагональ, если я это сделаю
a= np.eye(4) b = 1.8 *a
диагональ изменяется на 1.8, но изменение 0 по-прежнему остается для меня загадкой. Заранее благодарю вас!
Комментарии:
1.
b=1.8*a 8.1
?2. Это сработало отлично, спасибо
Ответ №1:
Поскольку вам нужно какое-то другое значение вместо 0 (вне диагонали), вы не можете основывать свою функцию на eye, а скорее на full, а затем присваивать диагональным элементам свое пользовательское значение, используя diag_indices .
Итак, определите свою функцию как:
def customEye(N : int, diagVal : float, otherVal : float):
a = np.full((N, N), otherVal)
a[np.diag_indices(N)] = diagVal
return a
Затем, когда вы вызываете arr = customEye(4, 1.8, 0.5)
результат:
array([[1.8, 0.5, 0.5, 0.5],
[0.5, 1.8, 0.5, 0.5],
[0.5, 0.5, 1.8, 0.5],
[0.5, 0.5, 0.5, 1.8]])