Python 3.6.5 (default, Mar 31 2018, 19:45:04) [GCC] on linux Type "copyright", "credits" or "license()" for more information. >>> import numpy as np >>> #numpy disponibiliza duas classes principais >>> #matrix: (matrizes bidimensionais) >>> #array: array de qualquer dimensão >>> >>> A = np.matrix( [ [1,2], [3,4] ] ) >>> A matrix([[1, 2], [3, 4]]) >>> print(A) [[1 2] [3 4]] >>> #acessando um elemento >>> A[0, 1] #acessa o elemento na linha 0, coluna 1 2 >>> #acessando uma linha >>> A[0] matrix([[1, 2]]) >>> linha = A[0] >>> linha matrix([[1, 2]]) >>> #acessando uma coluna >>> A[:, 1] matrix([[2], [4]]) >>> #a função zeros gera um array de zeros >>> M = np.matrix( np.zeros( (4,5) ) ) # gera uma matrix 4 X 5 de zeros >>> M matrix([[0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.]]) >>> np.zeros( (3,8) ) array([[0., 0., 0., 0., 0., 0., 0., 0.], [0., 0., 0., 0., 0., 0., 0., 0.], [0., 0., 0., 0., 0., 0., 0., 0.]]) >>> np.zeros( (2,4,3) ) array([[[0., 0., 0.], [0., 0., 0.], [0., 0., 0.], [0., 0., 0.]], [[0., 0., 0.], [0., 0., 0.], [0., 0., 0.], [0., 0., 0.]]]) >>> #podemos gerar matrizes de números aleatórios >>> #o submódulo random traz funções para geração de pseudo-aleatórios >>> import numpy.random as npr >>> #gerando uma matriz de inteiros entre -10 e 10 com duas linhas e 3 colunas >>> N = npr.randint( -10, 10, (2,3) ) >>> N array([[ 1, -9, 4], [-9, 7, 4]]) >>> N = np.matrix(N) >>> N matrix([[ 1, -9, 4], [-9, 7, 4]]) >>> >>> #podemos trabalhar com submatrizes >>> M matrix([[0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.]]) >>> N matrix([[ 1, -9, 4], [-9, 7, 4]]) >>> M[ 1:3, 1:4 ] = N >>> M matrix([[ 0., 0., 0., 0., 0.], [ 0., 1., -9., 4., 0.], [ 0., -9., 7., 4., 0.], [ 0., 0., 0., 0., 0.]]) >>> #podemos usar a função eye para gerar uma matriz identidade >>> B = np.matrix( np.eye(2,2), int ) >>> B matrix([[1, 0], [0, 1]]) >>> #podemos multiplicar uma matriz por escalar >>> B = 4*B >>> B matrix([[4, 0], [0, 4]]) >>> #podemos somar matrizes >>> C = A + B >>> C matrix([[5, 2], [3, 8]]) >>> A matrix([[1, 2], [3, 4]]) >>> B matrix([[4, 0], [0, 4]]) >>> #ou multiplicá-las >>> D = A * B >>> D matrix([[ 4, 8], [12, 16]]) >>> #pode-se fazer potências >>> W = A ** 2 # W = A * A >>> W matrix([[ 7, 10], [15, 22]]) >>> A ** -1 # calcula a inversa matrix([[-2. , 1. ], [ 1.5, -0.5]]) >>> Ainv = A ** -1 >>> A * Ainv matrix([[1.0000000e+00, 0.0000000e+00], [8.8817842e-16, 1.0000000e+00]]) >>> # transposta >>> A matrix([[1, 2], [3, 4]]) >>> np.transpose(A) matrix([[1, 3], [2, 4]]) >>> #concatenação de matrizes >>> #por coluna >>> np.hstack( (A,B) ) matrix([[1, 2, 4, 0], [3, 4, 0, 4]]) >>> #por linha >>> np.vstack( (A,B) ) matrix([[1, 2], [3, 4], [4, 0], [0, 4]]) >>> #existem funções que podem ser aplicadas a toos os elementos de uma matriz >>> #como sqrt, exp, sin, cos, exp, etc >>> A matrix([[1, 2], [3, 4]]) >>> np.sqrt( A ) matrix([[1. , 1.41421356], [1.73205081, 2. ]]) >>> #para ver as funções >>> help( np ) Help on package numpy: ... >>> #pode-se fazer coisas ainda mais mirabolantes com o submodulo linalg >>> import numpy.linalg as la >>> #autovalores, autovetores >>> autovals, autovets = la.eig(A) >>> autovals array([-0.37228132, 5.37228132]) >>> autovets matrix([[-0.82456484, -0.41597356], [ 0.56576746, -0.90937671]]) >>> #determinante >>> la.det(A) -2.0000000000000004 >>> #posto de matriz >>> la.matriz_rank(A) Traceback (most recent call last): File "", line 1, in la.matriz_rank(A) AttributeError: module 'numpy.linalg' has no attribute 'matriz_rank' >>> la.matrix_rank(A) 2 >>> #Resolvendo o sistema Ax = b >>> A matrix([[1, 2], [3, 4]]) >>> b = np.matrix( [ [10], [20] ] ) >>> """ 1x + 2y = 10 3x + 4y = 20 """ ' 1x + 2y = 10\n 3x + 4y = 20 ' >>> x = la.solve(A, b) #resolve o sistema linear Ax = b >>> x matrix([[0.], [5.]]) >>> A matrix([[1, 2], [3, 4]]) >>> b matrix([[10], [20]]) >>> A*b matrix([[ 50], [110]]) >>>