{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"2022-Aula2-Parte1-mais_sobre_Numpy.ipynb","provenance":[{"file_id":"1SaUe19GE_aoOfE2DQSv5rRhnOEPaEGYX","timestamp":1661201831322},{"file_id":"1BRMEW-o5hObB8eD-fUOmiTgL9qjxWJ2y","timestamp":1629745797396}],"collapsed_sections":["74SZzFyWcte-","ayv3DlXZR0yu","tME9dwTNO08X","Mc7J0mJnO08d"],"authorship_tag":"ABX9TyMliZ/QBn/TA9LsWhEW+mbV"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","metadata":{"id":"l8yg-jrZO07-"},"source":["# Numpy - ampliando as noções iniciais\n","\n","A Biblioteca Numpy oferece várias ferramentas para cálculos e para trabalhar com dados, sejam eles, arrays, matrizes, ou listas."]},{"cell_type":"code","metadata":{"id":"M4MEE2d_O08A"},"source":["#CARREGUE (importe) A NUMPY AQUI\n","import numpy as np"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"4k2tQDGVO08D"},"source":["**A seguir alguns comandos para gerar sequências de números com o numpy:**\n","\n","np.ones (*vimos na aula anterior*)\n","\n","np.zeros (*vimos na aula anterior*)\n","\n","( os 3 comandos abaixo também estão no final do notebook da aula passada) \n","\n","np.arange \n","\n","np.linspace\n","\n","np.array "]},{"cell_type":"markdown","metadata":{"id":"WdOiCJoyRNCi"},"source":["## Arange\n","Cria um array (vetor) de números equiespaçados, utilizando os parâmetros informados entre parêntesis \n","\n","```Python\n","np.arange(Ninício, NFim, Passo) #Ninício é 1o. valor desejado\n"," #NFim é o parâmetro que delimita o final da sequência de números, porém não é incluído na sequência, ou seja, \n"," #deve ser maior que o último número desejado e menor-igual ao (valor desejado + o passo)\n"," #Passo é o intervalo entre os números\n","```\n","\n"]},{"cell_type":"markdown","metadata":{"id":"oGbMQ3g93Kha"},"source":["- Gere um array (vetor) de 0 a 10 com o passo igual a 1:"]},{"cell_type":"code","metadata":{"id":"fAssvzMfO08E","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1629811401826,"user_tz":180,"elapsed":529,"user":{"displayName":"Liliana Alcazar Diogo","photoUrl":"","userId":"17867606949541679083"}},"outputId":"175cbd8e-d91a-417e-b911-6dc4c03296b4"},"source":["#RESPONDA AQUI\n","np.arange(0,10.1,1)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])"]},"metadata":{},"execution_count":4}]},{"cell_type":"markdown","metadata":{"id":"74SZzFyWcte-"},"source":["### Alguns testes para comparar com a resposta acima"]},{"cell_type":"code","metadata":{"id":"iyoslINJJ6Fx"},"source":["np.arange(0,10,1)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"XMiOEaBJde8E"},"source":["np.arange(0,10.1,1)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"-WkmvFRSMBjh"},"source":["np.arange(0,11,1.)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"ejUTiU3ifPsP"},"source":["np.arange(0,11.0001,1.)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"2vwr-gYMLast"},"source":["np.arange(Nfim) #utilizando os valores defalut para os parâmetros Ninício (=0) e Passo (=1)\n"," #mas continua valendo a regra do último número não estar incluído"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"8bG7PNWtMhkn","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1629811429771,"user_tz":180,"elapsed":125,"user":{"displayName":"Liliana Alcazar Diogo","photoUrl":"","userId":"17867606949541679083"}},"outputId":"3f1319e9-ad95-4c3e-9caf-3f3450086c56"},"source":["np.arange(10.1)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])"]},"metadata":{},"execution_count":9}]},{"cell_type":"markdown","metadata":{"id":"jXMLeiBC3bWu"},"source":["- Gere um array (vetor) de 0 a 10 com o passo igual a 2:"]},{"cell_type":"code","metadata":{"id":"2fVF-84C1Gc0"},"source":["#RESPONDA AQUI\n","np.arange()"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"ayv3DlXZR0yu"},"source":["## Linspace \n","\n","Também cria um array de números equiespaçados, utilizando os parâmetros definidos entre parêntesis\n","\n","(mas com uma lógica diferente do np.arange):\n","\n","```\n","np.linspace(Ninício, NFim, Número de elementos) # NFim, aqui é o último número desejado; \n"," # e o Passo será calculado em função do Número de elementos definidos para o vetor, \n"," #ou seja, o comprimento do vetor.\n","```"]},{"cell_type":"markdown","metadata":{"id":"xEg1P9L13eS2"},"source":["Gere os dois arrays acima utilizando agora o comando **linspace**"]},{"cell_type":"code","metadata":{"id":"8cd8VSiCI-9_"},"source":["#COMPLETE A RESPOSTA AQUI (Gere um array (vetor) de 0 a 10 com o passo igual a 1)\n","np.linspace(0,10,11)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"BHRHMzz2I_OO"},"source":["#COMPLETE A RESPOSTA AQUI (vetor de 0 a 10, com o passo igual a 2)\n","l1=np.linspace(0,10,6)\n","l1"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"1tWvu0hSOL1p"},"source":["#para conferir o tamanho do vetor\n","lenl1=len(l1)\n","lenl1"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"73gQvSyUOT8J"},"source":["#Para lembrar que a posição do primeiro elemento sempre é \"zero\", então a posição do último elemento é (len(vetor)-1)\n","v0=l1[0]\n","vfim=l1[5]\n","vfim2=l1[6-1]\n","vfim3=l1[len(l1)-1]\n","vfim4=l1[lenl1-1]\n","print(\"valor_inicio=\",v0,\"valor_fim=\",vfim, vfim2, vfim3,vfim4)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"P218xPBqoY7w"},"source":["# se o índice for maior que (len(vetor)-1) vai gerar resposta de Erro\n","l1[6]"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"IHkeqL17O08I"},"source":["#np.linspace tem o Número de elementos =50 como default \n","np.linspace(0,10)"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"tME9dwTNO08X"},"source":["## np.array\n","\n","Também é possível criar um vetor numpy a partir de uma lista qualquer.\n","\n","**Sintaxe:**\n","\n","```\n","np.array( nome_da_lista, dtype=_tipo_dos_elementos )\n","```"]},{"cell_type":"code","metadata":{"id":"1epx352eO08Y","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1661209429885,"user_tz":180,"elapsed":754,"user":{"displayName":"Liliana Alcazar Diogo","userId":"17867606949541679083"}},"outputId":"d5540d78-10bb-4016-e337-43e5a365c244"},"source":["#Variável lista \"e\" \n","e=[1, 2, 3,4]\n","e"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["[1, 2, 3, 4]"]},"metadata":{},"execution_count":2}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"QMgY2cqef2z0","executionInfo":{"status":"ok","timestamp":1661209430886,"user_tz":180,"elapsed":44,"user":{"displayName":"Liliana Alcazar Diogo","userId":"17867606949541679083"}},"outputId":"41163692-2c20-492c-8906-280a947eff77"},"source":["type(e)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["list"]},"metadata":{},"execution_count":3}]},{"cell_type":"code","metadata":{"id":"jKY1akyOSWWu"},"source":["e+2"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"uDqA8spbfPzB"},"source":["f=np.array(e)\n","f"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"NfXSXYXSHbSA"},"source":["type(f)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"Rpq7Pm12Sd25"},"source":["f+2"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"Q8OkVXqxf__C"},"source":["ff=np.array(e, dtype=float)\n","ff"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"npOdOHwmgNif"},"source":["type(ff)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"AZ4rqABeIE7Y"},"source":["type (f[1])"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"KYqrAJUBILU5"},"source":["type (ff[1])"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"Mc7J0mJnO08d"},"source":["# Algumas propriedades de Listas e de Vetores Numpy"]},{"cell_type":"markdown","metadata":{"id":"3DUCrZdh87m0"},"source":["A seguir alguns comandos que revelam características de vetores (array); alguns destes comandos, não todos, também valem para Listas:\n","\n","- ```len(nome_do_vetor)```: Retorna o tamanho do vetor (o número de elementos do vetor)\n","- ```nome_do_vetor[i]```: Retorna o iésimo elemento do vetor (desde que i < ```len(nome_do_vetor)```, lembrando que começa de i=0)\n","- ```nome_do_vetor[len(nome_do_vetor)-1]```:Retorna o último elemento do vetor\n","\n","- ```nome_do_vetor[-1]```: Também retorna o último elemento do vetor.\n","- ```nome_do_vetor[-2]```: Retorna o penúltimo elemento do vetor.\n","- ```nome_do_vetor[-len(vetor)]```: Retorna o primeiro elemento do vetor.\n","\n","- ```nome_do_vetor[começo:fim:passo]```: Retorna um array discretizado de acordo com as posições indicadas nos parâmetros inseridos entre [ ], ou seja, seleciona trechos de um vetor. Obs: a posição \"fim\" não é inserida (assim como no np.arange)\n","\n","\n","- ```nome_do_vetor.min()``` ou ```np.min(nome_do_vetor)``` : Retorna o menor valor de um vetor\n","-```nome_do_vetor.max()``` ou ```np.max(nome_do_vetor)```: Retorna o maior valor de um vetor\n","- ```nome_do_vetor.sum()``` ou ```np.sum(nome_do_vetor)```: Retorna a soma de todos os elementos do vetor\n"]},{"cell_type":"code","metadata":{"id":"W5NZsKU2O08h"},"source":["#EXEMPLOS de alguns COMANDOS ACIMA que também valem para LISTAS\n","e2=e*2\n","e2"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"COUlYSlKptRh"},"source":["emeio=e2[2:6:1]\n","emeio"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"EOw8ELVIq6xK"},"source":["eímpares=e2[0:len(e2):2]\n","eímpares"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"2X7JWCVvriV-"},"source":["epares=e2[1:len(e2):2]\n","epares"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"3wgh3PhUkC6o"},"source":["type(e2)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"tCsUxJ7FkXym"},"source":["e2.min()"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"3qHdOWYPkb6r"},"source":["f=np.array(e)\n","f.min()"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"Kp1u-nNq7xOo"},"source":["print(f)\n","print(np.sum(f))\n","print(np.min(f))\n","print(np.max(f))"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"KeYef8uI8fsB"},"source":["f.sum()"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"Am97iyM6jQhJ"},"source":["print(\"f =\",f)\n","finvertido=f[-1:-len(f):-1]\n","\n","print(\"f invertido =\",finvertido)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"RKwBcKmYkmzc"},"source":["finvertido=f[-1:-(len(f)+1):-1]\n","finvertido"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"Jm3vnoqPnzpq"},"source":["einvertido=e[-1:-len(e)-1:-1]\n","einvertido"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"rn_UR3ZBO09N"},"source":["# Alguns exemplos para calcular funções com o NumPy"]},{"cell_type":"markdown","metadata":{"id":"wta45Jr4stKq"},"source":["- 1) Como calcular a função seno e cosseno no Numpy:\n","\n","```\n","# np.sin (valor em radianos)\n","# np.cos (valor em radianos)\n","```"]},{"cell_type":"code","metadata":{"id":"CYnHHu6WsfSh"},"source":["#Calcule seno(0) e cosseno (0)"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"5OtFggnHVYXs"},"source":[" * 2) Como calcular a função seno(x) para x entre 0 e 360 graus:"]},{"cell_type":"code","metadata":{"id":"moQKd7rAO09N"},"source":["#primeiro vamos criar o vetor das variáveis da função seno: os ângulos em graus\n","x = np.linspace(0, 360.)\n","x"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"mk9bg713lx_D"},"source":["Para calcular o seno, os valores devem estar em radianos, assim, usaremos o comando np.radians(nome_do_vetor_em_graus) para fazer essa conversão"]},{"cell_type":"code","metadata":{"id":"6PIw76AAl7dC"},"source":["x = np.radians(x)\n","x"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"PMH-rjPomB4F"},"source":["Agora, calcule o seno do array x usando a função np.sin( variável ), atribua em uma variável y e imprima y"]},{"cell_type":"code","metadata":{"id":"PqxEX9HqmBbg"},"source":["#RESPONDA AQUI\n","y=np.sin(x)\n","y"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"2PFdiG-9uNoJ"},"source":["### 3) Testes e Exemplos com o valor do \"pi\""]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":167},"id":"6QJ6HrR-0mzO","executionInfo":{"status":"error","timestamp":1661220324293,"user_tz":180,"elapsed":356,"user":{"displayName":"Liliana Alcazar Diogo","userId":"17867606949541679083"}},"outputId":"e625ec38-6df9-45af-fbcc-7d3411055cea"},"source":["pi"],"execution_count":1,"outputs":[{"output_type":"error","ename":"NameError","evalue":"ignored","traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)","\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mpi\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m","\u001b[0;31mNameError\u001b[0m: name 'pi' is not defined"]}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"8KndJpu_z6o4","executionInfo":{"status":"ok","timestamp":1629735638308,"user_tz":180,"elapsed":259,"user":{"displayName":"Liliana Alcazar Diogo","photoUrl":"","userId":"17867606949541679083"}},"outputId":"7e0aece3-6950-4399-ccd7-290523e27a9b"},"source":["np.pi"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["3.141592653589793"]},"metadata":{},"execution_count":44}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"HUrnawdzu6Qm","executionInfo":{"status":"ok","timestamp":1629751069913,"user_tz":180,"elapsed":262,"user":{"displayName":"Liliana Alcazar Diogo","photoUrl":"","userId":"17867606949541679083"}},"outputId":"e1dc32ab-f9a2-4f7b-fc01-c22bd83a1c1f"},"source":["pi=np.pi\n","pi"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["3.141592653589793"]},"metadata":{},"execution_count":54}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"umv3IUXE0UeI","executionInfo":{"status":"ok","timestamp":1629735709875,"user_tz":180,"elapsed":257,"user":{"displayName":"Liliana Alcazar Diogo","photoUrl":"","userId":"17867606949541679083"}},"outputId":"09471f46-47b9-4a5b-f6f5-6e87e03f6710"},"source":["2*np.pi"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["6.283185307179586"]},"metadata":{},"execution_count":46}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"3z0sdVnn0YQZ","executionInfo":{"status":"ok","timestamp":1629735735415,"user_tz":180,"elapsed":253,"user":{"displayName":"Liliana Alcazar Diogo","photoUrl":"","userId":"17867606949541679083"}},"outputId":"33b8e9ae-1642-4a2c-fadb-4d24a63b6cb2"},"source":["np.degrees(2*np.pi)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["360.0"]},"metadata":{},"execution_count":47}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"6V6jOF14wrBI","executionInfo":{"status":"ok","timestamp":1629751547650,"user_tz":180,"elapsed":354,"user":{"displayName":"Liliana Alcazar Diogo","photoUrl":"","userId":"17867606949541679083"}},"outputId":"2ccce13d-09ed-41c4-8df8-683b71c90e7d"},"source":["np.degrees(2*pi)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["360.0"]},"metadata":{},"execution_count":58}]},{"cell_type":"markdown","metadata":{"id":"iGyRZM10x0b8"},"source":["## Comentários sobre o símbolo \\ \n","\n","Quando estiver no final de uma linha, indica que o comando continua na próxima linha "]},{"cell_type":"code","metadata":{"id":"xgGS4aC8d07W"},"source":["print(f)\n","f+10"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"wNA0qDJR1sPQ","executionInfo":{"status":"ok","timestamp":1629751657790,"user_tz":180,"elapsed":420,"user":{"displayName":"Liliana Alcazar Diogo","photoUrl":"","userId":"17867606949541679083"}},"outputId":"756564a1-a9df-42dd-e12d-72c16ca31211"},"source":["f+10\\\n","+100"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([111, 112, 113, 114])"]},"metadata":{},"execution_count":61}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"DQ0epS3fxO1L","executionInfo":{"status":"ok","timestamp":1629751675950,"user_tz":180,"elapsed":253,"user":{"displayName":"Liliana Alcazar Diogo","photoUrl":"","userId":"17867606949541679083"}},"outputId":"f202ff4c-eb0a-4979-8c16-d790e6a49eb7"},"source":["f+10+100"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([111, 112, 113, 114])"]},"metadata":{},"execution_count":62}]},{"cell_type":"markdown","metadata":{"id":"KUo-nTMyyYvv"},"source":["## 4) Exemplo de uso da função arcoseno"]},{"cell_type":"code","metadata":{"id":"McrdR7Pz8Rph"},"source":["# Exemplo do cálculo do ângulo crítico de incidência da onda sísmica em uma interface\n","v1=400 #velocidade da onda sísmica no meio 1, em m/s\n","v2=1500 #velocidade da onda sísmica no meio 2, em m/s\n","#ângulo crítico de incidência (ic12) para onda sísmica ser refratada criticamente na interface, \n","#ou seja, (i2=90graus) e pela Lei de Snell:\n","ic12=np.arcsin(v1/v2)\n","ic12"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"pPVSyUTpCCQ-"},"source":["np.degrees(ic12)"],"execution_count":null,"outputs":[]}]}