Создайте 2-мерный массив с помощью Numpy.eye с пользовательскими значениями для 0 и пользовательской диагональю

#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]])