numpy.diagonal
-
numpy.diagonal(a, offset=0, axis1=0, axis2=1)[source] -
Возвращает указанные диагонали.
Если
aявляется двумерным, возвращает диагональaс заданным смещением, т.е. совокупность элементов видаa[i, i+offset]. Еслиaимеет более двух измерений, то оси, указанныеaxis1иaxis2, используются для определения двумерного подмассива, диагональ которого возвращается. Форма результирующего массива может быть определена путём удаленияaxis1иaxis2и добавления индекса справа, равного размеру результирующих диагоналей.В версиях NumPy до 1.7 эта функция всегда возвращала новый независимый массив, содержащий копию значений на диагонали.
В NumPy 1.7 и 1.8 она по-прежнему возвращает копию диагонали, но это поведение устарело. Запись в результирующий массив по-прежнему работает, как и раньше, но выдаётся предупреждение FutureWarning.
Начиная с NumPy 1.9, она возвращает только для чтения вид на исходный массив. Попытка записи в результирующий массив приведёт к ошибке.
В будущих версиях она будет возвращать вид для чтения/записи, и запись в возвращаемый массив будет изменять ваш исходный массив. Возвращаемый массив будет иметь тот же тип, что и входной массив.
Если вы не записываете в массив, возвращаемый этой функцией, то вы можете просто проигнорировать всё вышесказанное.
Если вы полагаетесь на текущее поведение, мы рекомендуем явно скопировать возвращаемый массив, т.е. использовать
np.diagonal(a).copy()вместо простоnp.diagonal(a). Это будет работать как с прошлыми, так и с будущими версиями NumPy.Параметры: -
a : array_like -
Массив, из которого берутся диагонали.
-
offset : int, optional -
Смещение диагонали от главной диагонали. Может быть положительным или отрицательным. По умолчанию — главная диагональ (0).
-
axis1 : int, optional -
Ось, которая должна использоваться в качестве первой оси двумерных подмассивов, из которых должны быть взяты диагонали. По умолчанию — первая ось (0).
-
axis2 : int, optional -
Ось, которая должна использоваться в качестве второй оси двумерных подмассивов, из которых должны быть взяты диагонали. По умолчанию — вторая ось (1).
Возвращает: -
array_of_diagonals : ndarray -
Если
aявляется двумерным, то возвращается одномерный массив, содержащий диагональ и имеющий тот же тип, что иa, за исключением случая, еслиaявляетсяmatrix, в этом случае возвращается одномерный массив, а не (двумерная)matrix, для обеспечения обратной совместимости.Если
a.ndim > 2, то размеры, указанныеaxis1иaxis2, удаляются, и новая ось вставляется в конец, соответствующая диагонали.
Возможные исключения: - 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]]) -
© 2005–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.15.4/reference/generated/numpy.diagonal.html