Obecnie próbuję nauczyć się Numpy i Pythona. Biorąc pod uwagę następującą tablicę:
import numpy as np
a = np.array([[1,2],[1,2]])
Czy istnieje funkcja zwracająca wymiary a(np. Tablica 2 na 2)?
size() zwraca 4 i to niewiele pomaga.
Obecnie próbuję nauczyć się Numpy i Pythona. Biorąc pod uwagę następującą tablicę:
import numpy as np
a = np.array([[1,2],[1,2]])
Czy istnieje funkcja zwracająca wymiary a(np. Tablica 2 na 2)?
size() zwraca 4 i to niewiele pomaga.
Odpowiedzi:
shapemoże być dokładniej opisany jako atrybut niż jako funkcja , ponieważ nie jest wywoływany przy użyciu składni wywołania funkcji.
propertysama jest klasą, ndarray.shapenie jest klasą, jest instancją typu właściwości.
Zgodnie z konwencją w świecie Python skrót numpyto np:
In [1]: import numpy as np
In [2]: a = np.array([[1,2],[3,4]])
W Numpy wymiar , oś / osie , kształt są powiązane, a czasem podobne pojęcia:
W matematyce / fizyce wymiar lub wymiarowość jest nieformalnie definiowana jako minimalna liczba współrzędnych potrzebnych do określenia dowolnego punktu w przestrzeni. Ale w Numpy , zgodnie z dokumentem numpy , jest to to samo, co oś / osie:
W Numpy wymiary nazywane są osiami. Liczba osi to ranga.
In [3]: a.ndim # num of dimensions/axes, *Mathematics definition of dimension*
Out[3]: 2
nta współrzędnych indeksowany arrayw NumPy. A tablice wielowymiarowe mogą mieć jeden indeks na oś.
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)
opisuje liczbę danych (lub zakres) wzdłuż każdej dostępnej osi.
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)
Działa również, jeśli wejście nie jest tablicą liczb liczbowych, ale listą list
>>> a = [[1,2],[1,2]]
>>> np.shape(a)
(2,2)
Lub krotkę krotek
>>> a = ((1,2),(1,2))
>>> np.shape(a)
(2,2)
np.shapeNajpierw zamienia swój argument w tablicę, jeśli nie ma atrybutu kształtu, dlatego działa na przykładach listy i krotek.
Możesz użyć .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
Możesz użyć .ndimwymiaru i .shapeznać dokładny wymiar
var = np.array([[1,2,3,4,5,6], [1,2,3,4,5,6]])
var.ndim
# displays 2
var.shape
# display 6, 2
Możesz zmienić wymiar za pomocą .reshapefunkcji
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.shapeto tylko ograniczona wersja np.info(). Spójrz na to:
import numpy as np
a = np.array([[1,2],[1,2]])
np.info(a)
Na zewnątrz
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
shapew NumPy. To, co NumPy nazywa wymiarem, to 2, w twoim przypadku (ndim). Warto znać zwykłą terminologię NumPy: ułatwia to czytanie dokumentów!