Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] on win32 Type "copyright", "credits" or "license()" for more information. >>> import numpy KeyboardInterrupt >>> >>> >>> import numpy >>> from numpy import * >>> >>> #numpy disponibilzia duas classe principais: >>> #matrix: matrizes bidimensionais >>> #array: array multidimensionais (qualquer dimensao) >>> >>> A = matrix( [ [1,2], [3,4] ] ) >>> A matrix([[1, 2], [3, 4]]) >>> print(A) [[1 2] [3 4]] >>> A[0, 1] #acessando o elemento na linha 0 e coluna 1 2 >>> A[0] #acessando a linha 0 matrix([[1, 2]]) >>> A[:, 1] #acessando todas as linhas na coluna 1 matrix([[2], [4]]) >>> #a função zeros gera um array de zeros >>> M = matrix( zeros( (4,5) ) ) >>> M matrix([[0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.]]) >>> #note que geramos acima uma matriz de 4 linhas e colunas, todas com 0 >>> #podemos gerar uma matriz de aleatorios >>> from numpy.random import * >>> N = matrix ( randint(-10, 10, (2, 3)) ) #gera uma matriz de numeros pseudoaletaorios no intervalo [-10 10'] de duas linas e tres colunas >>> N matrix([[ 4, -2, -3], [ 9, -5, 6]]) >>> >>> M[ 1:3, 1:4 ] #submatriz de M da linha 1 ate a 2 e da coluna 1 ate a 3 matrix([[0., 0., 0.], [0., 0., 0.]]) >>> M[ 1:3, 1:4 ] = N >>> M matrix([[ 0., 0., 0., 0., 0.], [ 0., 4., -2., -3., 0.], [ 0., 9., -5., 6., 0.], [ 0., 0., 0., 0., 0.]]) >>> >>> # a função eye gera uma matriz identidade >>> B = matrix( eye( (2,2), int) ) Traceback (most recent call last): File "", line 1, in B = matrix( eye( (2,2), int) ) File "C:\Users\wendel\AppData\Local\Programs\Python\Python36\lib\site-packages\numpy\lib\twodim_base.py", line 186, in eye m = zeros((N, M), dtype=dtype, order=order) TypeError: 'tuple' object cannot be interpreted as an integer >>> >>> B = matrix( eye(2,2) ) #gera uma matriz identidade 2X2 >>> B matrix([[1., 0.], [0., 1.]]) >>> matrix( eye(10,10) ) matrix([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.], [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.], [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.], [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.], [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.], [0., 0., 0., 0., 0., 0., 1., 0., 0., 0.], [0., 0., 0., 0., 0., 0., 0., 1., 0., 0.], [0., 0., 0., 0., 0., 0., 0., 0., 1., 0.], [0., 0., 0., 0., 0., 0., 0., 0., 0., 1.]]) >>> >>> B = matrix( eye(2,2, int) ) Traceback (most recent call last): File "", line 1, in B = matrix( eye(2,2, int) ) File "C:\Users\wendel\AppData\Local\Programs\Python\Python36\lib\site-packages\numpy\lib\twodim_base.py", line 187, in eye if k >= M: TypeError: '>=' not supported between instances of 'type' and 'int' >>> B = matrix( eye(2,2), int ) >>> B matrix([[1, 0], [0, 1]]) >>> #podemos multiplicar a matriz por um escalar >>> B = B*4 >>> B matrix([[4, 0], [0, 4]]) >>> #podemos somar matrizes >>> C = A + B >>> C matrix([[5, 2], [3, 8]]) >>> #ou multiplicá-las >>> D = A*B >>> D matrix([[ 4, 8], [12, 16]]) >>> #potência >>> A**2 matrix([[ 7, 10], [15, 22]]) >>> A * A matrix([[ 7, 10], [15, 22]]) >>> A[0,0] * A[1,1] 4 >>> A matrix([[1, 2], [3, 4]]) >>> A[0] * B[:, 1] matrix([[8]]) >>> # o codigo acima multiplicou a linha 0 de 0 com a coluna 1 de B >>> #calculando inversa >>> A**-1 matrix([[-2. , 1. ], [ 1.5, -0.5]]) >>> A * (A**-1) matrix([[1.0000000e+00, 0.0000000e+00], [8.8817842e-16, 1.0000000e+00]]) >>> #transposta >>> transpose(A) matrix([[1, 3], [2, 4]]) >>> trace(A) #calcula o traço da matriz A 5 >>> #podemos concatenar matrizes >>> #por coluna >>> hstack(A, B) Traceback (most recent call last): File "", line 1, in hstack(A, B) TypeError: hstack() takes 1 positional argument but 2 were given >>> hstack( (A,B) ) matrix([[1, 2, 4, 0], [3, 4, 0, 4]]) >>> #por linha (vertical) >>> vstack( (A,B) ) matrix([[1, 2], [3, 4], [4, 0], [0, 4]]) >>> #existem funções que podem ser aplicadas a todos os elementos de uma matriz >>> sqrt(A) matrix([[1. , 1.41421356], [1.73205081, 2. ]]) >>> >>> #podemos fazer coisas ainda mais mirabolantes com o módulo de álgebra linear >>> from numpy.linalg import * >>> #calculo de autovalores e autovetores: >>> autovals, autovets = eig(A) #calcula autovalores e autovetores da matriz A >>> autovals array([-0.37228132, 5.37228132]) >>> #autovals é a lista de autovalores >>> autovets matrix([[-0.82456484, -0.41597356], [ 0.56576746, -0.90937671]]) >>> #autovets contém os autovetores da matriz >>> #claculando determinante: >>> det(A) -2.0000000000000004 >>> #calculando posto de matriz >>> matriz_rank(A) Traceback (most recent call last): File "", line 1, in matriz_rank(A) NameError: name 'matriz_rank' is not defined >>> matrix_rank(A) 2 >>> #a função matrix_rank(A) calcula o posto de uma matriz >>> #resolvendo o sisema linear Ax = b >>> b = matrix( [ [10], [20] ] ) >>> A matrix([[1, 2], [3, 4]]) >>> b matrix([[10], [20]]) >>> #Ax = b >>> >>> x = solve( A, b ) #x será a solução do sistema Ax = b >>> x matrix([[0.], [5.]]) >>> >>> #usando a biblioteca matplotlib para plotar graficos >>> #exemplo: plotando o gráfico que conecta os pontos A(-5, 4), B(0, 0) e o ponto C(5, 10) >>> >>> import matplotlib.pyplot as plt >>> x = [-5, 0, 5] #vetor com as coordenadas x >>> y = [4, 0, 10] #vetor com as coordenadas y >>> plt.plot( x, y ) [] >>> plt.show() >>> >>> >>> #uma vez que a função plot gera gráficos lineares por partes, podemos aproximar o gráfico de qualquer função com uma quantidade suficiente de pontos >>> >>> #exemplo: vamos plotar o grafico da exponencial de x >>> >>> import numpy as np >>> import matplotlib.pyplot as plt >>> >>> x2 = np.arange(1.0, 5.0, 0.2) #gera os valores no intervalo de 1 até 5 com passo 0.2 SyntaxError: can't assign to literal >>> x2 = np.arange(1.0, 5.0, 0.2) >>> x2 array([1. , 1.2, 1.4, 1.6, 1.8, 2. , 2.2, 2.4, 2.6, 2.8, 3. , 3.2, 3.4, 3.6, 3.8, 4. , 4.2, 4.4, 4.6, 4.8]) >>> y2 = np.exp( x2 ) >>> y2 array([ 2.71828183, 3.32011692, 4.05519997, 4.95303242, 6.04964746, 7.3890561 , 9.0250135 , 11.02317638, 13.46373804, 16.44464677, 20.08553692, 24.5325302 , 29.96410005, 36.59823444, 44.70118449, 54.59815003, 66.68633104, 81.45086866, 99.48431564, 121.51041752]) >>> >>> >>> plt.plot(x2, y2, 'g') [] >>> plt.show()