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,zerosouempty... 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.arraynã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.arraycomeç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 ndarrayclasse, 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- ndarraydiretamente 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.