Eu tenho um numpy_array. Algo como [ a b c ]
.
E então eu quero anexá-lo em outra matriz NumPy (assim como criamos uma lista de listas). Como criamos uma matriz de matrizes NumPy contendo matrizes NumPy?
Eu tentei fazer o seguinte sem sorte
>>> M = np.array([])
>>> M
array([], dtype=float64)
>>> M.append(a,axis=0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'numpy.ndarray' object has no attribute 'append'
>>> a
array([1, 2, 3])
Respostas:
ou isto:
fonte
vstack()
ideia de Sven . Você sabe que pode criar a matriz comarray([[1,2,3],[2,3,4]])
, certo?numpy.vstack
pode aceitar mais de 2 matrizes no argumento de sequência. Portanto, se você precisar combinar mais de 2 matrizes, o vstack será mais útil.concatenate
também pode tomar várias matrizesBem, a mensagem de erro diz tudo: matrizes NumPy não têm um
append()
método. Existe uma função livrenumpy.append()
no entanto:Isso criará uma nova matriz em vez de mudar
M
no local. Observe que o usonumpy.append()
envolve copiar as duas matrizes. Você obterá um código com melhor desempenho se usar matrizes NumPy de tamanho fixo.fonte
numpy.vstack()
.Você pode usar
numpy.append()
...Isso não criará duas matrizes separadas, mas anexará duas matrizes em uma matriz dimensional única.
fonte
Sven disse tudo, apenas tenha muito cuidado por causa dos ajustes automáticos de tipo quando o acréscimo é chamado.
Como você vê, com base no conteúdo, o dtype passou de int64 para float32 e depois para S1
fonte
Eu encontrei esse link enquanto procurava algo um pouco diferente, como começar a acrescentar objetos de matriz a uma matriz numpy vazia , mas tentei todas as soluções nesta página sem sucesso.
Então eu encontrei esta pergunta e resposta: Como adicionar uma nova linha a uma matriz numpy vazia
A essência aqui:
Em seguida, você pode usar concatenar para adicionar linhas da seguinte maneira:
arr = np.concatenate( ( arr, [[x, y, z]] ) , axis=0)
Veja também https://docs.scipy.org/doc/numpy/reference/generated/numpy.concatenate.html
fonte
Na verdade, sempre é possível criar uma lista comum de matrizes numpy e convertê-la mais tarde.
fonte
Eu tive o mesmo problema e não pude comentar a resposta de @Sven Marnach (repetição insuficiente, Deus me lembro quando o Stackoverflow começou ...) de qualquer maneira.
Adicionando uma lista de números aleatórios a uma matriz 10 x 10.
Usando np.zeros (), uma matriz é criada com 1 x 10 zeros.
Em seguida, uma lista de 10 números aleatórios é criada usando np.random e atribuída a randomList. O loop empilha 10 alta. Só precisamos lembrar de remover a primeira entrada vazia.
Então, em uma função:
uma matriz 7 x 7 usando números aleatórios 0 - 1000
fonte
Se eu entendi sua pergunta, aqui está uma maneira. Digamos que você tenha:
então aqui está um código ...
O que leva a:
fonte
Tente este código:
Além disso, você pode usar a matriz em vez de "a"
fonte