Size: 4724
Comment:
|
Size: 6487
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
#acl Patrick Brosi:read,write Björn Buchhold:read,write Claudius Korzen:read,write Axel Lehmann:read,write Raghu Rajan: read,write Johanna Goetz:read,write Natalie Prange:read,write Hannah Bast:read,write All:read | #acl All:read,write |
Line 29: | Line 29: |
TODO (Natalie): numpy.where, numpy.argsort, numpy.min, numpy.argmin, numpy.round (useful for tests), ... | === numpy.round === Takes an array and rounds its values to the given number of decimals. Note that for values exactly halfway between rounded decimal values, Numpy rounds to the nearest even value. [[https://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.around.html|numpy.around]] {{{ >>> numpy.round([1.98, 2.34, 4.76], 1) [ 2. 2.3 4.8] }}} {{{ >>> numpy.round([1.5, 0.5, 3.5, 4.5], 0) [ 2. 0. 4. 4.] }}} === numpy.min === Takes an array and returns its minimum value. If an axis is specified, returns the minimum along the axis. [[https://docs.scipy.org/doc/numpy/reference/generated/numpy.amin.html|numpy.amin]] {{{ >>> numpy.min([[5, 0, 1], [4, 3, 2]]) 0 }}} {{{ >>> numpy.min([[5, 0, 1], [4, 3, 2]], axis=0) [4 0 1] }}} === numpy.argmin === Takes an array and returns the index of the minimum value of the flattened array. If an axis is specified, returns the indices of the minimum values along the axis. [[https://docs.scipy.org/doc/numpy/reference/generated/numpy.argmin.html|numpy.argmin]] {{{ >>> numpy.argmin([[5, 0, 1], [4, 3, 2]]) 1 }}} {{{ >>> numpy.argmin([[5, 0, 1], [4, 3, 2]], axis=0) [1 0 0] }}} === numpy.argsort === Takes an array a and returns an array of indices that sort a. Optionally, you can specify the axis along which a will be sorted. By default the axis is -1. [[https://docs.scipy.org/doc/numpy/reference/generated/numpy.argsort.html|numpy.argsort]] {{{ >>> numpy.argsort([[0, 4, 0], [4, 3, 2]], axis=0) [[0 1 0] [1 0 1]] }}} {{{ >>> numpy.argsort([[0, 4, 0], [4, 3, 2]], axis=1) [[0 2 1] [2 1 0]] }}} === numpy.where === Takes a condition and optionally two array-like objects x and y. If x and y are specified, returns an array that contains elements from x where condition is true and elements from y elsewhere. [[https://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html|numpy.where]] {{{ >>> x = numpy.array([[5, 4, 3], [2, 1, 0]]) >>> y = numpy.array([[0, 1, 2], [3, 4, 5]]) >>> numpy.where(x > 3, x, y) [[5 4 2] [3 4 5]] }}} |
numpy cheat sheet
General
TODO (?)
Matrix construction
TODO (Hannah): for dense matrices (matrix vs. array) as well as sparse matrices (csr_matrix((data, indices, indptr)))
Accessing elements
TODO (Hannah): crazy element access magic, single elements, entire rows, sub-matrices
Matrix operations
TODO (Raghu): examples of dot product (dense * dense, dense * sparse, sparse * sparse), usage of both matrix.dot() and *, constant factor adding / multiplication
TODO (Claudius): Element-wise operations like taking log, sqrt. Multiplying two m*n matrices element-wise (for example, to square the entries in a matrix etc...)
Row- or column-wise operations
TODO (Claudius): summing of rows or columns, sorting rows / columns etc
Useful methods
numpy.round
Takes an array and rounds its values to the given number of decimals. Note that for values exactly halfway between rounded decimal values, Numpy rounds to the nearest even value. numpy.around
>>> numpy.round([1.98, 2.34, 4.76], 1) [ 2. 2.3 4.8]
>>> numpy.round([1.5, 0.5, 3.5, 4.5], 0) [ 2. 0. 4. 4.]
numpy.min
Takes an array and returns its minimum value. If an axis is specified, returns the minimum along the axis. numpy.amin
>>> numpy.min([[5, 0, 1], [4, 3, 2]]) 0
>>> numpy.min([[5, 0, 1], [4, 3, 2]], axis=0) [4 0 1]
numpy.argmin
Takes an array and returns the index of the minimum value of the flattened array. If an axis is specified, returns the indices of the minimum values along the axis. numpy.argmin
>>> numpy.argmin([[5, 0, 1], [4, 3, 2]]) 1
>>> numpy.argmin([[5, 0, 1], [4, 3, 2]], axis=0) [1 0 0]
numpy.argsort
Takes an array a and returns an array of indices that sort a. Optionally, you can specify the axis along which a will be sorted. By default the axis is -1. numpy.argsort
>>> numpy.argsort([[0, 4, 0], [4, 3, 2]], axis=0) [[0 1 0] [1 0 1]]
>>> numpy.argsort([[0, 4, 0], [4, 3, 2]], axis=1) [[0 2 1] [2 1 0]]
numpy.where
Takes a condition and optionally two array-like objects x and y. If x and y are specified, returns an array that contains elements from x where condition is true and elements from y elsewhere. numpy.where
>>> x = numpy.array([[5, 4, 3], [2, 1, 0]]) >>> y = numpy.array([[0, 1, 2], [3, 4, 5]]) >>> numpy.where(x > 3, x, y) [[5 4 2] [3 4 5]]
Special matrices
Diagonal matrix
Matrix (usually square) in which all entries are zero, except on the main diagonal. Use numpy.diag to either create a diagonal matrix from a given main diagonal, or extract the diagonal matrix from a given matrix.
>>> numpy.diag([1,2,3]) array([[1, 0, 0], [0, 2, 0], [0, 0, 3]])
>>> numpy.diag([[1, 5, 4], [7, 2, 4], [4, 7, 3]]) array([1, 2, 3])
For a sparse matrix, use scipy.spare.spdiags.
Identity matrix
Special diagonal m*m matrix where all elements on the main diagonal are 1. Read as the '1' of matrix world. For example, a n*m matrix A multiplied with an m*m identity matrix yields A again. Use numpy.identity(k) to create a k*k identity matrix.
>>> numpy.identity(4) array([[ 1., 0., 0., 0.], [ 0., 1., 0., 0.], [ 0., 0., 1., 0.], [ 0., 0., 0., 1.]])
>>> numpy.array([[1, 2, 3], [3, 4, 3]]).dot(numpy.identity(3)) array([[ 1., 2., 3.], [ 3., 4., 3.]])
For a sparse matrix, use scipy.sparse.identity.
Triangular matrix
A (square) matrix where all elements below (upper triangle) or above (lower triangle) the main diagonal are zero. numpy.triu creates the upper (u), numpy.tril the lower (l) triangular matrix from a given matrix.
>>> numpy.triu([[1, 5, 4], [7, 2, 4], [4, 7, 3]]) array([[1, 5, 4], [0, 2, 4], [0, 0, 3]])
>>> numpy.tril([[1, 5, 4], [7, 2, 4], [4, 7, 3]]) array([[1, 0, 0], [7, 2, 0], [4, 7, 3]])
For a sparse matrix, use scipy.sparse.triu and scipy.sparse.tril.
Matrix decomposition
Singular Value Decompostion (SVD)
Factorize a matrix A (m*n) into three matrices U (m * r), S (r * r) and V (r * n) such that A = U * S * V. Here r is the rank of A.
Use numpy.linalg.svd to do a singular value decomposition for a dense matrix. Use scipy.sparse.linalg.svds for sparse matrices (computes the largest k singular values for a sparse matrix).
>>> Uk, Sk, Vk = svds(csr_matrix([[1, 2, 3], [3, 4, 5], [5, 6, 4]], dtype=float), 2) >>> print("Uk:\n", Uk, "\nSk:\n", Sk, "\nVk:\n", Vk) Uk: [[ 0.56475636 -0.30288472] [ 0.51457155 -0.59799935] [-0.64518709 -0.74206309]] Sk: [ 2.13530566 11.67829513] Vk: [[-0.52332762 -0.32001209 0.78975975] [-0.49726421 -0.63794803 -0.58800563]]