from brian2 import diagonal)
diagonal(x, *args, **kwds)¶
Return specified diagonals.
ais 2-D, returns the diagonal of
awith the given offset, i.e., the collection of elements of the form
a[i, i+offset]. If
ahas more than two dimensions, then the axes specified by
axis2are used to determine the 2-D sub-array whose diagonal is returned. The shape of the resulting array can be determined by removing
axis2and appending an index to the right equal to the size of the resulting diagonals.
In versions of NumPy prior to 1.7, this function always returned a new, independent array containing a copy of the values in the diagonal.
In NumPy 1.7, it continues to return a copy of the diagonal, but depending on this fact is deprecated. Writing to the resulting array continues to work as it used to, but a FutureWarning will be issued.
In NumPy 1.9, it will switch to returning a read-only view on the original array. Attempting to write to the resulting array will produce an error.
In NumPy 1.10, it will still return a view, but this view will no longer be marked read-only. Writing to the returned array will alter your original array as well.
If you don’t write to the array returned by this function, then you can just ignore all of the above.
If you depend on the current behavior, then we suggest copying the returned array explicitly, i.e., use
np.diagonal(a).copy()instead of just
np.diagonal(a). This will work with both past and future versions of NumPy.
a : array_like
Array from which the diagonals are taken.
offset : int, optional
Offset of the diagonal from the main diagonal. Can be positive or negative. Defaults to main diagonal (0).
axis1 : int, optional
Axis to be used as the first axis of the 2-D sub-arrays from which the diagonals should be taken. Defaults to first axis (0).
axis2 : int, optional
Axis to be used as the second axis of the 2-D sub-arrays from which the diagonals should be taken. Defaults to second axis (1).
array_of_diagonals : ndarray
ais 2-D, a 1-D array containing the diagonal is returned. If the dimension of
ais larger, then an array of diagonals is returned, “packed” from left-most dimension to right-most (e.g., if
ais 3-D, then the diagonals are “packed” along rows).
- If the dimension of
ais less than 2.
- MATLAB work-a-like for 1-D and 2-D arrays.
- Create diagonal arrays.
- Sum along diagonals.
>>> a = np.arange(4).reshape(2,2) >>> a array([[0, 1], [2, 3]]) >>> a.diagonal() array([0, 3]) >>> a.diagonal(1) array()
A 3-D example:
>>> 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]])
The sub-arrays whose main diagonals we just obtained; note that each corresponds to fixing the right-most (column) axis, and that the diagonals are “packed” in rows.
>>> a[:,:,0] # main diagonal is [0 6] array([[0, 2], [4, 6]]) >>> a[:,:,1] # main diagonal is [1 7] array([[1, 3], [5, 7]])