Функция, которую вы ищете: 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.