HOWTO · NumPy
Adicionar linha à matriz em NumPy
Este tutorial demonstra como adicionar uma linha a um array em numpy.
Nesta página
Uma matriz do NumPy é um array bidimensional. Para adicionar uma linha, forneça um valor para cada coluna e combine essa linha ao longo do eixo 0. Use numpy.vstack() para empilhar arrays verticalmente; use numpy.append() ou numpy.concatenate() quando o modo como combinam arrays se encaixar melhor no seu código. Essas operações retornam um novo array, então atribua o resultado se quiser mantê-lo.
Os exemplos usam uma matriz com três colunas e adicionam [7, 8, 9]. Cada exemplo imprime o array resultante para que você possa ver a linha adicionada.
Adicionar uma linha com numpy.vstack()
numpy.vstack() empilha arrays verticalmente. Ela aceita a nova linha como um array unidimensional e retorna um novo array com essa linha na parte inferior.
Execute este exemplo:
import numpy as np
matrix = np.array([[1, 2, 3],
[4, 5, 6]])
new_row = np.array([7, 8, 9])
result = np.vstack((matrix, new_row))
print(result)
A matrix original permanece inalterada; result contém a linha adicionada. A linha precisa ter três valores para corresponder ao número de colunas da matriz. Para adicionar várias linhas, passe um array bidimensional de linhas para numpy.vstack().
Adicionar uma linha com numpy.append()
Com numpy.append(), defina axis=0 para adicionar valores ao longo da dimensão das linhas. Neste exemplo, a nova linha é bidimensional, com formato (1, 3), que corresponde às duas dimensões da matriz e às suas três colunas.
import numpy as np
matrix = np.array([[1, 2, 3],
[4, 5, 6]])
new_row = np.array([[7, 8, 9]])
result = np.append(matrix, new_row, axis=0)
print(result)
numpy.append() retorna um novo array em vez de alterar matrix no próprio lugar. Para usar o array resultante, atribua o valor retornado, como no exemplo acima. Com axis=0, os arrays precisam ter o mesmo número de colunas; também é possível adicionar várias linhas quando elas são fornecidas em um formato bidimensional compatível. Se for adicionar linhas repetidamente a um array grande, considere reuni-las e combiná-las de uma só vez, pois cada operação de append cria um array resultante.
Combinar linhas com numpy.concatenate() e numpy.r_
numpy.concatenate() combina arrays ao longo de um eixo existente. Use axis=0 para adicionar linhas e verifique se cada entrada tem o mesmo número de colunas. Como é uma operação geral de combinação de arrays, ela também funciona com mais de dois arrays compatíveis.
import numpy as np
matrix = np.array([[1, 2, 3],
[4, 5, 6]])
new_row = np.array([[7, 8, 9]])
result = np.concatenate((matrix, new_row), axis=0)
print(result)
numpy.r_ é um objeto especial de indexação, não uma chamada de função. Ele oferece uma forma concisa de combinar linhas neste caso:
import numpy as np
matrix = np.array([[1, 2, 3],
[4, 5, 6]])
new_row = np.array([[7, 8, 9]])
result = np.r_[matrix, new_row]
print(result)
Escolha numpy.vstack() quando o empilhamento vertical deixar a intenção mais clara, e numpy.concatenate() quando quiser indicar o eixo explicitamente ou combinar uma sequência de arrays. numpy.r_ é uma alternativa compacta para concatenações simples.
Inserir uma linha em uma posição específica com numpy.insert()
Use numpy.insert() quando a nova linha precisar ficar entre linhas existentes. O argumento obj indica a posição de inserção: o índice 1 coloca a linha antes da segunda linha atual. Defina axis=0 para que o NumPy insira a linha ao longo da dimensão das linhas.
import numpy as np
matrix = np.array([[1, 2, 3],
[4, 5, 6]])
new_row = [7, 8, 9]
result = np.insert(matrix, 1, new_row, axis=0)
print(result)
Para inserir depois da última linha, use a contagem atual de linhas como posição. Em um array bidimensional, .shape é um atributo cujo primeiro valor corresponde ao número de linhas:
import numpy as np
matrix = np.array([[1, 2, 3],
[4, 5, 6]])
new_row = [7, 8, 9]
position = matrix.shape[0]
result = np.insert(matrix, position, new_row, axis=0)
print(result)
Como os outros métodos, numpy.insert() retorna um novo array. Guarde o resultado ou atribua-o novamente a matrix; o array original não é modificado. Nas quatro abordagens, a linha adicionada precisa ter o mesmo número de colunas das linhas existentes.