Как создать массив, указав диагональные значения - PullRequest
0 голосов
/ 08 октября 2019

У меня есть массив, как показано ниже:

  poles = numpy.array([[-1+1j], [-1-1j], [-2+3j], [-2-3j]])

Его форма (4,1).

Когда я использую numpy.diag, как показано ниже:

LA = numpy.diag(poles)

Вывод [-1.+1.j], в то время как я ожидаю увидеть диагональную матрицу. Может кто-нибудь объяснить, что происходит и что нужно сделать, чтобы увидеть диагональную матрицу? Я также попытался изменить форму на (1,4), но результат не изменился.

1 Ответ

1 голос
/ 08 октября 2019

Функция, которую вы ищете: np.fill_diagonal. Это установит диагональные значения массива. Сначала вам нужно будет создать массив:

arr = np.zeros((4, 4), dtype=np.complex64))
np.fill_diagonal(arr, poles)

arr сейчас:

array([[-1.+1.j,  0.+0.j,  0.+0.j,  0.+0.j],
       [ 0.+0.j, -1.-1.j,  0.+0.j,  0.+0.j],
       [ 0.+0.j,  0.+0.j, -2.+3.j,  0.+0.j],
       [ 0.+0.j,  0.+0.j,  0.+0.j, -2.-3.j]], dtype=complex64)

np.diagonal, с другой стороны, извлекает значения вдиагональ. Выходные данные np.diagonal(arr):

array([-1.+1.j, -1.-1.j, -2.+3.j, -2.-3.j], dtype=complex64)

В вашем примере вы извлекаете диагональ poles, которая имеет только одно значение в диагонали, поскольку одна из осей имеет длину только 1.

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