• Nenhum resultado encontrado

Vetores e matrizes em Python usando NumPy

N/A
N/A
Protected

Academic year: 2021

Share "Vetores e matrizes em Python usando NumPy"

Copied!
3
0
0

Texto

(1)

Universidade Federal de Pernambuco – UFPE Centro de Informática

Sistemas de Informação IF968 – Programação 1 Professor: Renato Vimieiro

Lista de exercícios práticos 3 – Vetores e matrizes Entrega: 27/04/16

Instruções

• Faça os algoritmos em python.

• Faça um algoritmo por arquivo.

• Utilize o template disponível no site da disciplina

Vetores e matrizes em Python usando NumPy

Os vetores e matrizes em Python/NumPy podem ser instanciados das seguintes formas:

x = numpy.zeros([<dim1>, <dim2>, ..., <dimN>],dtype=<type>) y = numpy.ones([<dim1>, <dim2>, ..., <dimN>],dtype=<type>) z = numpy.empty([<dim1>, <dim2>, ..., <dimN>],dtype=<type>) w = numpy.full([<dim1>, <dim2>, ..., <dimN>],valor,dtype=<type>)

A primeira opção cria uma estrutura N-dimensional cujos elementos são todos zeros, enquanto a segunda cria uma estrutura com uns. A terceira cria uma estrutura N-dimensional sem inicializar os valores, enquanto a quarta cria tal estrutura preenchendo todas as posições com o valor informado. Os tamanhos de cada uma das N dimensões devem ser colocados entre parêntesis e separados por vírgulas. O tipo de dados pode ser um dos seguintes:

bool Boolean (True or False) stored as a byte

int Default integer type (same as C long; normally either int64 or int32) intc Identical to C int (normally int32 or int64)

intp Integer used for indexing (same as C ssize_t; normally either int32 or int64) int8 Byte (-128 to 127)

int16 Integer (-32768 to 32767)

int32 Integer (-2147483648 to 2147483647)

int64 Integer (-9223372036854775808 to 9223372036854775807) uint8 Unsigned integer (0 to 255)

uint16 Unsigned integer (0 to 65535) uint32 Unsigned integer (0 to 4294967295)

uint64 Unsigned integer (0 to 18446744073709551615) float Shorthand for float64.

float16 Half precision float: sign bit, 5 bits exponent, 10 bits mantissa float32 Single precision float: sign bit, 8 bits exponent, 23 bits mantissa float64 Double precision float: sign bit, 11 bits exponent, 52 bits mantissa complex Shorthand for complex128.

complex64 Complex number, represented by two 32-bit floats (real and imaginary components) complex128 Complex number, represented by two 64-bit floats (real and imaginary components) string Python strings (tamanho fixo)

unicode Texto em unicode object Objetos em Python

Outros tipos mais complexos podem ser construídos utilizando-se dtype. Porém, a construção de tipos mais avançados foge ao escopo dessa disciplina e não será visto aqui.

Exemplo: deseja-se instanciar um vetor de inteiros com 10 elementos, uma matriz de reais 20x30 e um vetor de 50 strings com até 10 símbolos. Deve-se fazê-lo como:

x = numpy.empty((10),dtype="int") y = numpy.ones((20,30),dtype="float") z = numpy.empty(50,"S10")

Da mesma forma que em pseudocódigo, em Python, os elementos das matrizes são indexados por valores entre 0 e n-1 (inclusive). Há uma diferença, contudo, quanto a indexação de variáveis com mais de uma dimensão. Ao contrário de pseudocódigo, pode-se também indexar os elementos de uma matriz da seguinte forma:

1

(2)

y = numpy.ones((20,30),dtype="float") y[10,15] = 10

Essa instrução é equivalente a y[10][15] ← 10 em pseudocódigo e a y[10][15] = 10 também em Python. Além disso, existem outras formas de se indexar vetores e matrizes. Recomenda-se a leitura da seguinte página http:

//docs.scipy.org/doc/numpy/reference/arrays.indexing.html

Outra alteração de pseudocódigo para Python é que os tamanhos das dimensões podem ser quaisquer expressões inteiras. Logo, pode-se criar um vetor com a dimensão especificada pelo usuário. Exemplo:

import numpy

tamanho = int(raw_input("Informe o tamanho do vetor:")) vetor = numpy.zeros(tamanho,dtype="int")

Após a instanciação de uma matriz, pode-se conhecer/alterar sua forma utilizando-se o atributo shape. O exemplo a seguir cria uma matriz 3x10 de 1s e, em seguida, altera sua forma para uma matriz 5x6.

x = numpy.ones((3,10),dtype="float") x.shape = (5,6)

É importante notar que o número total de elementos na matriz não pode ser alterado. Assim, não poderíamos usar esse comando para alterar a forma da matriz para 5x7, por exemplo.

Exercícios

1. Crie um programa que leia um número positivo n, crie um vetor de inteiros com n elementos, preencha-o de forma que vetor[i] = i ∗ (i + 1) e depois calcule a soma dos elementos do vetor. Ao final, o programa deve exibir os elementos do vetor e a soma. Enquanto o usuário não entrar com um valor positivo, o programa deve solicitar outro valor. Exemplo:

C:\python Prog.py Entre com um valor:

-1

Entre com um valor:

-2

Entre com um valor:

3

2 + 6 + 12 = 20 C:\

2. Crie um programa que leia o número de alunos de uma turma, o número de avaliações feitas por cada aluno, leia as notas dos alunos, seus nomes e apresente na tela o nome do aluno e seu status (aprovado, reprovado ou exame final) com base no total de suas notas. Deve ser criada uma matriz para notas e um vetor para os nomes. Exemplo:

C:\python Prog.py

Entre com o numero de alunos:

3

Entre com o numero de notas/aluno:

4

Entre com o nome e as notas do aluno 1:

Jose 10 2.5 8 2.0

Entre com o nome e as notas do aluno 2:

Joao 2.0 2.0 2.0 2.0

2

(3)

Entre com o nome e as notas do aluno 3:

Manuel 5.2 5.4 9.0 10.0 Alunos

Jose exame final Joao reprovado Manuel aprovado

3. Um n-grama é uma subsequência de n símbolos (unidades) de uma sequência original. Estes símbolos podem ser vistos como unidades da sequência sendo analisada tais como palavras, letras, pares de base de DNA, etc.

A computação de n-gramas é muito útil em aplicações de internet para verificação do idioma de um texto, por exemplo. Faça um algoritmo que leia uma string e um valor n e compute os n-gramas dessa string tomando como unidade básica os caracteres que compõe a string. Exemplo

Entre com a string:

casa

Entre com o valor de n:

2

Os n-gramas sao:

ca as sa

4. Faça um programa que gere uma matriz 512x512 de inteiros aleatórios entre 0 e 255 (inclusive). Em seguida, o programa deve exibir quantas vezes cada valor entre 0 e 255 aparece na matriz. A geração de números aleatórios pode ser feita usando-se a função randint do pacote random. Veja sua documentação em https:

//docs.python.org/2/library/random.html.

5. Faça um programa que leia duas matrizes A e B (os tamanhos serão informados pelo usuário) e depois calcule C = A × B. Lembrando que as duas matrizes só podem ser multiplicadas se A

M×N

e B

N×P

.

3

Referências

Documentos relacionados

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá

Equipamentos de emergência imediatamente acessíveis, com instruções de utilização. Assegurar-se que os lava- olhos e os chuveiros de segurança estejam próximos ao local de

Como irá trabalhar com JavaServer Faces voltado para um container compatível com a tecnologia Java EE 5, você deverá baixar a versão JSF 1.2, a utilizada nesse tutorial.. Ao baixar

Com o objetivo de compreender como se efetivou a participação das educadoras - Maria Zuíla e Silva Moraes; Minerva Diaz de Sá Barreto - na criação dos diversos

a) Doenças pré-existentes ao período de viagem (vigência do seguro) e quaisquer de suas conseqüências, incluindo convalescenças e afecções em tratamentos ainda

(grifos nossos). b) Em observância ao princípio da impessoalidade, a Administração não pode atuar com vistas a prejudicar ou beneficiar pessoas determinadas, vez que é

No entanto, para aperfeiçoar uma equipe de trabalho comprometida com a qualidade e produtividade é necessário motivação, e, satisfação, através de incentivos e política de

A prova do ENADE/2011, aplicada aos estudantes da Área de Tecnologia em Redes de Computadores, com duração total de 4 horas, apresentou questões discursivas e de múltipla