numpy.diagonal
- numpy.diagonal(a, offset=0, axis1=0, axis2=1)[source]
-
Возвращает указанные диагонали.
Если
aявляется 2-мерным, возвращает диагональaс заданным смещением, т. е. набор элементов видаa[i, i+offset]. Еслиaимеет более двух измерений, то оси, указанныеaxis1иaxis2, используются для определения 2-мерного подмассива, диагональ которого возвращается. Форма результирующего массива может быть определена путем удаленияaxis1иaxis2и добавления индекса справа, равного размеру полученных диагоналей.В версиях NumPy до 1.7 эта функция всегда возвращала новый, независимый массив, содержащий копию значений на диагонали.
В NumPy 1.7 и 1.8 она по-прежнему возвращает копию диагонали, но это свойство устарело. Запись в результирующий массив по-прежнему работает, как и раньше, но выдаётся предупреждение FutureWarning.
Начиная с NumPy 1.9 она возвращает только для чтения представление исходного массива. Попытка записи в результирующий массив вызовет ошибку.
В будущей версии она будет возвращать представление с чтением/записью, и запись в результирующий массив будет изменять исходный массив. Возвращаемый массив будет иметь тот же тип, что и входной массив.
Если вы не записываете в массив, возвращаемый этой функцией, то можете просто проигнорировать всё вышесказанное.
Если вы полагаетесь на текущее поведение, то мы рекомендуем явно скопировать возвращаемый массив, т. е., используйте
np.diagonal(a).copy()вместо простоnp.diagonal(a). Это будет работать как в прошлых, так и в будущих версиях NumPy.- Parameters:
-
- aarray_like
-
Массив, из которого берутся диагонали.
- offsetint, optional
-
Смещение диагонали от главной диагонали. Может быть положительным или отрицательным. По умолчанию — главная диагональ (0).
- axis1int, optional
-
Ось, используемая в качестве первой оси 2-мерных подмассивов, из которых должны быть взяты диагонали. По умолчанию — первая ось (0).
- axis2int, optional
-
Ось, используемая в качестве второй оси 2-мерных подмассивов, из которых должны быть взяты диагонали. По умолчанию — вторая ось (1).
- Returns:
-
- array_of_diagonalsndarray
-
Если
aявляется 2-мерным, возвращается одномерный массив, содержащий диагональ и того же типа, что иa, еслиa—matrix, в таком случае, возвращается одномерный массив вместо (2-мерного)matrix, чтобы сохранить обратную совместимость.Если
a.ndim > 2, тогда измерения, указанныеaxis1иaxis2, удаляются, а новая ось вставляется в конец, соответствующая диагонали.
- Raises:
-
- ValueError
-
Если размерность
aменьше 2.
См. также
Примеры
>>> a = np.arange(4).reshape(2,2) >>> a array([[0, 1], [2, 3]]) >>> a.diagonal() array([0, 3]) >>> a.diagonal(1) array([1])Пример с 3-мерным массивом:
>>> a = np.arange(8).reshape(2,2,2); a array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]]) >>> a.diagonal(0, # Main diagonals of two arrays created by skipping ... 0, # across the outer(left)-most axis last and ... 1) # the "middle" (row) axis first. array([[0, 6], [1, 7]])Подмассивы, главные диагонали которых мы только что получили; обратите внимание, что каждый из них соответствует фиксированию правой (столбцовой) оси, и что диагонали «упакованы» в строки.
>>> a[:,:,0] # main diagonal is [0 6] array([[0, 2], [4, 6]]) >>> a[:,:,1] # main diagonal is [1 7] array([[1, 3], [5, 7]])Противоположную диагональ можно получить, изменив порядок элементов с помощью либо
numpy.flipud, либоnumpy.fliplr.>>> a = np.arange(9).reshape(3, 3) >>> a array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) >>> np.fliplr(a).diagonal() # Horizontal flip array([2, 4, 6]) >>> np.flipud(a).diagonal() # Vertical flip array([6, 4, 2])Обратите внимание, что порядок получения диагоналей зависит от функции переворота.
© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/generated/numpy.diagonal.html