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:
shape
może być dokładniej opisany jako atrybut niż jako funkcja , ponieważ nie jest wywoływany przy użyciu składni wywołania funkcji.
property
sama jest klasą, ndarray.shape
nie jest klasą, jest instancją typu właściwości.
Zgodnie z konwencją w świecie Python skrót numpy
to 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 array
w 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.shape
Najpierw 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ć .ndim
wymiaru i .shape
znać 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ą .reshape
funkcji
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
to 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
shape
w NumPy. To, co NumPy nazywa wymiarem, to 2, w twoim przypadku (ndim
). Warto znać zwykłą terminologię NumPy: ułatwia to czytanie dokumentów!