Respostas:
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 de numpy.ndarray.__array__
. numpy.array
começa em _array_fromobject
, pelo menos na implementação atual.
numpy.array
é uma função que retorna a numpy.ndarray
. Não há tipo de objeto numpy.array.
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
a = [1,2,3]
Verifique o tipo
print(type(a))
Você vai ter
<class 'list'>
Construa uma matriz (de uma lista) usando np.array
a = np.array(a)
Ou você pode pular a etapa de aquecimento, diretamente
a = np.array([1,2,3])
Verifique o tipo
print(type(a))
Você vai ter
<class 'numpy.ndarray'>
que indica o tipo da matriz numpy é numpy.ndarray
Você também pode verificar o tipo
isinstance(a, (np.ndarray))
e você receberá
True
Uma das duas linhas a seguir exibirá uma mensagem de erro
np.ndarray(a) # should be np.array(a)
isinstance(a, (np.array)) # should be isinstance(a, (np.ndarray))
numpy.ndarray()
é uma classe, enquanto numpy.array()
é um método / função para criar ndarray
.
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()
ou empty()
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:
np.ndarray(shape=(2,2), dtype=float, order='F', buffer=None) array([[ -1.13698227e+002, 4.25087011e-303], [ 2.88528414e-306, 3.27025015e-309]]) #random
outro exemplo é atribuir um objeto de matriz ao exemplo de buffer:
>>> np.ndarray((2,), buffer=np.array([1,2,3]), ... offset=np.int_().itemsize, ... dtype=int) # offset = 1*itemsize, i.e. skip first element array([2, 3])
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 um numpy.ndarray()
objeto "
Eu acho que com np.array()
você só pode criar C como se você mencionasse a ordem, quando você verifica usando np.isfortran()
, diz false. mas com np.ndarrray()
quando você especificar o pedido que ele cria com base no pedido fornecido.