Atualmente, estou tentando aprender Numpy e Python. Dada a seguinte matriz:
import numpy as np
a = np.array([[1,2],[1,2]])
Existe uma função que retorna as dimensões de a
(ega é uma matriz de 2 por 2)?
size()
retorna 4 e isso não ajuda muito.
Atualmente, estou tentando aprender Numpy e Python. Dada a seguinte matriz:
import numpy as np
a = np.array([[1,2],[1,2]])
Existe uma função que retorna as dimensões de a
(ega é uma matriz de 2 por 2)?
size()
retorna 4 e isso não ajuda muito.
Respostas:
shape
pode ser descrito com mais precisão como um atributo do que como uma função , pois não é chamado usando a sintaxe da chamada de função.
property
ela própria seja uma classe, ndarray.shape
não é uma classe, é uma instância do tipo de propriedade.
Por convenção, no mundo Python, o atalho para numpy
é np
, então:
In [1]: import numpy as np
In [2]: a = np.array([[1,2],[3,4]])
Em Numpy, dimensão , eixo / eixo , forma estão relacionados e, às vezes, conceitos semelhantes:
Em Matemática / Física , dimensão ou dimensionalidade é definida informalmente como o número mínimo de coordenadas necessárias para especificar qualquer ponto dentro de um espaço. Mas em Numpy , de acordo com o documento numpy , é o mesmo que eixo / eixos:
Em Numpy, as dimensões são chamadas de eixos. O número de eixos é classificação.
In [3]: a.ndim # num of dimensions/axes, *Mathematics definition of dimension*
Out[3]: 2
a enésima coordenada para indexar um array
em Numpy. E matrizes multidimensionais podem ter um índice por eixo.
In [4]: a[1,0] # to index `a`, we specific 1 at the first axis and 0 at the second axis.
Out[4]: 3 # which results in 3 (locate at the row 1 and column 0, 0-based index)
descreve quantos dados (ou o intervalo) ao longo de cada eixo disponível.
In [5]: a.shape
Out[5]: (2, 2) # both the first and second axis have 2 (columns/rows/pages/blocks/...) data
import numpy as np
>>> np.shape(a)
(2,2)
Também funciona se a entrada não for uma matriz numpy, mas uma lista de listas
>>> a = [[1,2],[1,2]]
>>> np.shape(a)
(2,2)
Ou uma tupla de tuplas
>>> a = ((1,2),(1,2))
>>> np.shape(a)
(2,2)
np.shape
primeiro transforma seu argumento em uma matriz, se não tiver o atributo shape, por isso funciona nos exemplos de lista e tupla.
Você pode usar .shape
In: a = np.array([[1,2,3],[4,5,6]])
In: a.shape
Out: (2, 3)
In: a.shape[0] # x axis
Out: 2
In: a.shape[1] # y axis
Out: 3
Você pode usar .ndim
para dimensão e .shape
conhecer a dimensão exata
var = np.array([[1,2,3,4,5,6], [1,2,3,4,5,6]])
var.ndim
# displays 2
var.shape
# display 6, 2
Você pode alterar a dimensão usando a .reshape
função
var = np.array([[1,2,3,4,5,6], [1,2,3,4,5,6]]).reshape(3,4)
var.ndim
#display 2
var.shape
#display 3, 4
a.shape
é apenas uma versão limitada do np.info()
. Veja isso:
import numpy as np
a = np.array([[1,2],[1,2]])
np.info(a)
Fora
class: ndarray
shape: (2, 2)
strides: (8, 4)
itemsize: 4
aligned: True
contiguous: True
fortran: False
data pointer: 0x27509cf0560
byteorder: little
byteswap: False
type: int32
shape
, em NumPy. O que NumPy chama de dimensão é 2, no seu caso (ndim
). É útil conhecer a terminologia usual do NumPy: isso facilita a leitura dos documentos!