Como iterar colunas em Numpy

Como iterar colunas em Numpy
Neste artigo, estudaremos como iterar as colunas da matriz Numpy. Veremos todos os métodos básicos disso. Também veremos alguns métodos avançados de iteração, como o método de objeto Nditer.

Método 1: Usando para Loop

Neste método, iterará a matriz 1-D (dimensional) com a ajuda do loop for. Esta é apenas uma maneira semelhante às outras linguagens de programação C, C ++, Python, etc.

ImportNumpyasnp
Arr = np.ARANGE (12)
Forvalinarr:
Imprimir (val, end = ")

Saída:

0 1 2 3 4 5 6 7 8 9 10 11

Linha 1: Nós importamos a biblioteca Numpy como NP. Para que possamos usar este espaço para nome (NP) em vez do nome completo Numpy.

Linha 2: Criamos uma matriz de 12 elementos que se parecem abaixo:

Array ([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])

Linha 3 a 4: Agora estamos usando um loop for para iterar cada elemento da matriz e imprimir esse valor do elemento.

Método 2: Usando o loop while

Neste método, iterará a matriz 1-D (dimensional) com a ajuda do while loop.

ImportNumpyasnp
Arr = np.ARANGE (12)
i = 0
Whilearr [i] Imprimir (arr [i])
i = i+1
se (i == arr.tamanho):
quebrar

Saída:

0
1
2
3
4
5
6
7
8
9
10
11

Linha 4 a 8: Neste loop enquanto o loop continua até o tamanho da matriz (arr. tamanho) é menor que o arr [i] porque, como sabemos, o último valor do elemento será 11 e o tamanho da matriz é 12. Se a condição for verdadeira, imprima esse elemento e incremente o valor da iteração (i) por 1. Se a contagem de valor de iteração for igual ao tamanho da matriz, o intervalo ligará e sairá do loop. O arr.O tamanho retornará o número de elementos na matriz.

Método 3: iterando uma matriz bidimensional

Para iterar a matriz bidimensional, precisamos do loop aninhado. Mas se usarmos o single para loop, então iteramos apenas sobre a linha.

Vamos entender isso com um exemplo.

Arr = np.ARANGE (12).remodelar (4,3)
Para Row Inarr:
Imprimir (linha)

Saída:

[0 1 2]
[3 4 5]
[6 7 8]
[9 10 11]

Linha 2 a 3: Temos a saída em termos de linha porque, com a ajuda do loop único, não conseguimos iterar cada célula da matriz 2-D.

Usando o loop aninhado.

Arr = np.ARANGE (12).remodelar (4,3)
Para Row Inarr:
para célula na linha:
Imprimir (célula, end = '\ t')
print ("\ n")

Saída:

0 1 2
3 4 5
6 7 8
9 10 11

Linha 2 a 5: No programa acima, usamos dois loops para iterar uma matriz 2D. O primeiro loop leva o valor da linha do ARR, e o próximo loop acessará todos os elementos dessa matriz de linha e impressam na tela, como mostrado na saída.

Método 4: Usando o método de achatação

Outro método é o método achatado. O método achatado converte a matriz 2-D em uma matriz unidimensional. Não precisamos de dois loops para iterar a matriz 2-D se usarmos o método achatado.

Arr = np.ARANGE (12).remodelar (4,3)
para a célula INARR.flatten ():
Imprimir (célula, end = ")

Saída:

0 1 2 3 4 5 6 7 8 9 10 11

Linha 2 a 3: O método Flatten () converteu a matriz 2-D em uma matriz 1-D, e nós a iteramos exatamente da mesma maneira. Aqui, não precisamos usar dois para loop.

Método 5: Usando o objeto Nditer

O Numpy também fornece um método adicional para iterar a matriz 2-D. Este método é chamado de método Nditer. No exemplo anterior, também podemos tentar com o método Nditer, conforme indicado abaixo:

Arr = np.ARANGE (12).remodelar (4,3)
para Cell Innp.nditer (arr):
Imprimir (célula, end = ")

Saída:

0 1 2 3 4 5 6 7 8 9 10 11

Linha 2 a 3: Passamos nossa matriz para o método nditer (), e agora podemos acessar cada elemento assim como o método flatten ().

Ordem de iteração do Nditer

Também podemos controlar o método de acesso do Nditer por outro parâmetro chamado Ordem. Se especificarmos o pedido como C, o Nditer acessa os elementos em termos horizontais e, se especificarmos a ordem como f, ele acessará os elementos verticalmente. Vamos entender isso com um exemplo de cada pedido.

Ordem como C:

# C iteração do pedido
Arr = np.ARANGE (12).remodelar (4,3)
para Cell Innp.nditer (arr, order = 'c'):
Imprimir (célula, end = ")

Saída:

0 1 2 3 4 5 6 7 8 9 10 11

Se, imprimimos apenas o ARR, obtemos a saída como dê abaixo:

Array ([[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
[9, 10, 11]])

Agora, como usamos o loop nditer com a ordem como C. Então, ele acessará os elementos horizontalmente. Portanto, se virmos na saída da matriz acima, nossos valores devem ser 0,1,2, então 3, 4, 5 e assim por diante. Portanto, nosso resultado também está na mesma sequência, que mostra que a ordem C funciona horizontalmente.

Encomende como f:

# F iteração de pedido
Arr = np.ARANGE (12).remodelar (4,3)
para Cell Innp.nditer (arr, order = 'f'):
Imprimir (célula, end = ")

Saída:

0 3 6 9 1 4 7 10 2 5 8 11

Se, imprimimos apenas o ARR, obtemos a saída como dê abaixo:

Array ([[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
[9, 10, 11]])

Agora, como usamos o loop nditer com a ordem como f. Então, ele acessará os elementos verticalmente. Portanto, se vemos na saída da matriz acima, nossos valores devem ser 0,3,6,9, então 1, 4, 7,10 e assim por diante. Portanto, nosso resultado também está na mesma sequência, que mostra que a ordem f funciona verticalmente.

Método 6: Modificação para os valores da matriz Numpy ao usar o Nditer

Por padrão, o Nditer trata os elementos da matriz como somente leitura, e não podemos modificá-la. Se tentarmos fazer isso, o Numpy levantará um erro.

Mas, se queremos editar os valores da matriz Numpy, temos que usar outro parâmetro chamado op_flags = ['readWrite'].

Vamos entender isso com um exemplo:

para Cell Innp.nditer (arr):
célula […] = célula*2

Saída:

---------------------------------------------------------------------------
ValueError Traceback (chamada mais recente)
em
1 para Cell Innp.nditer (arr):
----> 2 célula […] = célula*2
ValueError: o destino da atribuição é somente leitura

Com op_flags = ['readWrite'] parâmetro.

para Cell Innp.nditer (arr, op_flags = ['readWrite']):
célula […] = Cell-3
Arr

OPUT:

Array ([[ -3, -2, -1],
[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])

Conclusão:

Então, neste artigo, estudamos todos os métodos para iterar a matriz Numpy. O melhor método é Nditer. Este método Nditer é mais avançado para lidar com os elementos da matriz Numpy. Aqui neste artigo, todos os conceitos básicos ficarão claros e você também pode analisar alguns métodos mais avançados do Nditer, como a iteração de redução. Estes são os métodos como iterações de redução, que são as técnicas para lidar com os elementos da matriz numpy em diferentes formas.

O código deste artigo está disponível no link abaixo:

https: // github.com/shekharpandey89/numpy-columns-aliteations-methods