Um arranjo numpy.array é um tabelamento de elementos de um mesmo tipo. Os elementos são organizados por eixos indexados (em inglês, axes). Enquanto que nas seções anteriores nos restringimos a arrays unidimensionais (de apenas um eixo), aqui, vamos estudar a alocação e manipulação de arranjos de vários eixos.
A alocação de um numpy.array com mais de um eixo pode ser feita usando-se de listas encadeadas. Por exemplo,
cria o arranjo a de dois eixos, enquanto
cria o arranjo b de três eixos. Para fazer um paralelo com a matemática, o arranjo a é similar (mas, não equivalente) a matriz
(5.63) |
e o arranjo b é similar (mas, não equivalente) ao tensor .
A propriedade .shape é um tuple contendo o tamanho de cada eixo. Por exemplo,
informa que a tem dois eixos, o primeiro com tamanho e o segundo com tamanho . Um paralelo com matrizes, dizemos que a tem duas linhas e três colunas. No caso do arranjo b, temos
o que nos informa tratar-se de um array de três eixos, cada um com tamanho .
O número total de elementos de um array pode ser obtido do atributo numpy.ndarray.size. Por exemplo,
Os elementos em um arranjo são indexados por eixos e o fatiamento também pode ser feito por eixos. Por exemplo,
No caso do arranjo b de três eixos, temos
O NumPy conta com várias funções para a inicialização de arrays, algumas das mais usadas são:
numpy.zeros inicialização com zeros
numpy.ones inicialização com uns
numpy.empty inicialização com valor da memória
Observamos que o tamanho dos eixos é passado por um tuple.
O NumPy contém várias funções para a manipulação de arrays. Algumas das mais usadas são:
numpy.reshape reformatação de um arranjo.
numpy.concatenate concatena um tuple de arranjos.
De forma análoga a arranjos unidimensionais, as operações aritméticas e funções elementares são aplicadas elemento-a-elementos em um arranjo. Por exemplo,
Dada uma matriz e um vetor , a multiplicação matriz-vetor é definida por
(5.72) | |||
(5.77) |
Considere a matriz
(5.78) |
e o vetor . A multiplicação matriz-vetor é
(5.85) | |||
(5.86) |
Dadas matrizes e , a multiplicação matriz-matriz é a matriz de elementos
(5.87) |
Consideramos as matrizes
(5.88) |
(5.89) |
A multiplicação matriz-matriz é
(5.99) |
Complete as lacunas.
A alocação de numpy.array com mais de um eixo pode ser feita usando-se de listas encadeadas.
A propriedade .shape de um numpy.array é um tuple contendo o tamanho de cada eixo.
O atributo .size é o número total de objetos de um numpy.array.
O método numpy.reshape permite a reformatação de um numpy.array.
a) encadeadas; b) tuple; c) .size; d) numpy.reshape
Aloque o arranjo que corresponde a matriz
(5.100) |
Sem implementar, forneça a saída das seguintes instruções:
A[2,1]
A[0,2]
A[-2,-2]
A[3]
A[3:,:]
A[:,2]
A[:,1:2]
Dica: aloque o arranjo e implemente as instruções.
Considere o arranjo
Sem implementar, forneça a saída das seguintes instruções:
A[2,0,1]
A[1,1,0]
A[2]
A[1,2]
A[1:,:2,2]
Dica: aloque o arranjo e implemente as instruções.
Considere o arranjo
Sem implementar, escreva os seguintes arranjos derivados:
a.reshape(6)
a.reshape(2,3)
a.reshape(-1)
a.reshape(-1,3)
a.reshape(3,-1)
a.reshape(4,-1)
Dica: aloque o arranjo e implemente as instruções.
Considere os arranjos
Sem implementar, escreva os seguintes arranjos derivados:
np.concatenate((a,b.reshape(1,-1)))
np.concatenate((a.reshape(-1,1),b))
np.concatenate((a,b.reshape(1,-1)), axis=1)
np.concatenate((a.reshape(-1,1),b), axis=1)
Dica: aloque o arranjo e implemente as instruções.
Implemente uma função que recebe uma matriz (representada por um array) e retorna a sua transposta. Teste seu código para diversas matrizes com diversos formatos.
Implemente uma função que compute a multiplicação vetor-matriz
(5.101) | |||
(5.107) |
onde, por definição, , com elementos
(5.108) |
Dica: a função numpy.dot também computa a multiplicação vetor-matriz. Teste sua implementação para diferentes matriz e vetores de diferentes tamanhos.
Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!
Este texto é disponibilizado nos termos da Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional. Ícones e elementos gráficos podem estar sujeitos a condições adicionais.
Um arranjo numpy.array é um tabelamento de elementos de um mesmo tipo. Os elementos são organizados por eixos indexados (em inglês, axes). Enquanto que nas seções anteriores nos restringimos a arrays unidimensionais (de apenas um eixo), aqui, vamos estudar a alocação e manipulação de arranjos de vários eixos.
A alocação de um numpy.array com mais de um eixo pode ser feita usando-se de listas encadeadas. Por exemplo,
cria o arranjo a de dois eixos, enquanto
cria o arranjo b de três eixos. Para fazer um paralelo com a matemática, o arranjo a é similar (mas, não equivalente) a matriz
(5.63) |
e o arranjo b é similar (mas, não equivalente) ao tensor .
A propriedade .shape é um tuple contendo o tamanho de cada eixo. Por exemplo,
informa que a tem dois eixos, o primeiro com tamanho e o segundo com tamanho . Um paralelo com matrizes, dizemos que a tem duas linhas e três colunas. No caso do arranjo b, temos
o que nos informa tratar-se de um array de três eixos, cada um com tamanho .
O número total de elementos de um array pode ser obtido do atributo numpy.ndarray.size. Por exemplo,
Os elementos em um arranjo são indexados por eixos e o fatiamento também pode ser feito por eixos. Por exemplo,
No caso do arranjo b de três eixos, temos
O NumPy conta com várias funções para a inicialização de arrays, algumas das mais usadas são:
numpy.zeros inicialização com zeros
numpy.ones inicialização com uns
numpy.empty inicialização com valor da memória
Observamos que o tamanho dos eixos é passado por um tuple.
O NumPy contém várias funções para a manipulação de arrays. Algumas das mais usadas são:
numpy.reshape reformatação de um arranjo.
numpy.concatenate concatena um tuple de arranjos.
De forma análoga a arranjos unidimensionais, as operações aritméticas e funções elementares são aplicadas elemento-a-elementos em um arranjo. Por exemplo,
Dada uma matriz e um vetor , a multiplicação matriz-vetor é definida por
(5.72) | |||
(5.77) |
Considere a matriz
(5.78) |
e o vetor . A multiplicação matriz-vetor é
(5.85) | |||
(5.86) |
Dadas matrizes e , a multiplicação matriz-matriz é a matriz de elementos
(5.87) |
Consideramos as matrizes
(5.88) |
(5.89) |
A multiplicação matriz-matriz é
(5.99) |
Complete as lacunas.
A alocação de numpy.array com mais de um eixo pode ser feita usando-se de listas encadeadas.
A propriedade .shape de um numpy.array é um tuple contendo o tamanho de cada eixo.
O atributo .size é o número total de objetos de um numpy.array.
O método numpy.reshape permite a reformatação de um numpy.array.
a) encadeadas; b) tuple; c) .size; d) numpy.reshape
Aloque o arranjo que corresponde a matriz
(5.100) |
Sem implementar, forneça a saída das seguintes instruções:
A[2,1]
A[0,2]
A[-2,-2]
A[3]
A[3:,:]
A[:,2]
A[:,1:2]
Dica: aloque o arranjo e implemente as instruções.
Considere o arranjo
Sem implementar, forneça a saída das seguintes instruções:
A[2,0,1]
A[1,1,0]
A[2]
A[1,2]
A[1:,:2,2]
Dica: aloque o arranjo e implemente as instruções.
Considere o arranjo
Sem implementar, escreva os seguintes arranjos derivados:
a.reshape(6)
a.reshape(2,3)
a.reshape(-1)
a.reshape(-1,3)
a.reshape(3,-1)
a.reshape(4,-1)
Dica: aloque o arranjo e implemente as instruções.
Considere os arranjos
Sem implementar, escreva os seguintes arranjos derivados:
np.concatenate((a,b.reshape(1,-1)))
np.concatenate((a.reshape(-1,1),b))
np.concatenate((a,b.reshape(1,-1)), axis=1)
np.concatenate((a.reshape(-1,1),b), axis=1)
Dica: aloque o arranjo e implemente as instruções.
Implemente uma função que recebe uma matriz (representada por um array) e retorna a sua transposta. Teste seu código para diversas matrizes com diversos formatos.
Implemente uma função que compute a multiplicação vetor-matriz
(5.101) | |||
(5.107) |
onde, por definição, , com elementos
(5.108) |
Dica: a função numpy.dot também computa a multiplicação vetor-matriz. Teste sua implementação para diferentes matriz e vetores de diferentes tamanhos.
Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!
Este texto é disponibilizado nos termos da Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional. Ícones e elementos gráficos podem estar sujeitos a condições adicionais.