Qual é a diferença entre ndarray
e array
no Numpy? E onde posso encontrar as implementações no código-fonte numpy?
240
Qual é a diferença entre ndarray
e array
no Numpy? E onde posso encontrar as implementações no código-fonte numpy?
numpy.array
é apenas uma função de conveniência para criar um ndarray
; não é uma classe em si.
Você também pode criar uma matriz usando numpy.ndarray
, mas não é a maneira recomendada. A partir da doutrina de numpy.ndarray
:
As matrizes devem ser construídas usando
array
,zeros
ouempty
... Os parâmetros fornecidos aqui se referem a um método de baixo nível (ndarray(...)
) para instanciar uma matriz.
A maior parte da carne da implementação está no código C, aqui em multiarray , mas você pode começar a olhar para as interfaces ndarray aqui:
https://github.com/numpy/numpy/blob/master/numpy/core/numeric.py
np.array
não é uma aula, como eu costumo fazer.x = np.array([1,2.1,3])
if isinstance(x,np.array): # will give you a TypeError
array_getarray
é a implementação denumpy.ndarray.__array__
.numpy.array
começa em_array_fromobject
, pelo menos na implementação atual.numpy.array
é uma função que retorna anumpy.ndarray
. Não há tipo de objeto numpy.array.fonte
Apenas algumas linhas de código de exemplo para mostrar a diferença entre numpy.array e numpy.ndarray
Etapa de aquecimento: criar uma lista
Verifique o tipo
Você vai ter
Construa uma matriz (de uma lista) usando np.array
Ou você pode pular a etapa de aquecimento, diretamente
Verifique o tipo
Você vai ter
que indica o tipo da matriz numpy é numpy.ndarray
Você também pode verificar o tipo
e você receberá
Uma das duas linhas a seguir exibirá uma mensagem de erro
fonte
numpy.ndarray()
é uma classe, enquantonumpy.array()
é um método / função para criarndarray
.Em documentos numpy, se você deseja criar uma matriz a partir da
ndarray
classe, pode fazê-lo de duas maneiras, conforme citado:1- usando
array()
,zeros()
ouempty()
métodos: As matrizes devem ser construídas usando matriz, zeros ou vazio (consulte a seção Consulte também abaixo). Os parâmetros fornecidos aqui se referem a um método de baixo nível (ndarray(…)
) para instanciar uma matriz.2-
ndarray
diretamente da classe: existem dois modos de criar uma matriz usando__new__
: Se o buffer for Nenhum, somente forma, tipo e ordem serão usados. Se buffer é um objeto que expõe a interface do buffer, todas as palavras-chave são interpretadas.O exemplo abaixo fornece uma matriz aleatória porque não atribuímos valor de buffer:
outro exemplo é atribuir um objeto de matriz ao exemplo de buffer:
do exemplo acima, notamos que não podemos atribuir uma lista ao "buffer" e tivemos que usar numpy.array () para retornar o objeto ndarray para o buffer
Conclusão: uso
numpy.array()
se você quiser criar umnumpy.ndarray()
objeto "fonte
Eu acho que com
np.array()
você só pode criar C como se você mencionasse a ordem, quando você verifica usandonp.isfortran()
, diz false. mas comnp.ndarrray()
quando você especificar o pedido que ele cria com base no pedido fornecido.fonte