Typy NumPy
Lekcja 7 z 18 w kursie Podstawy NumPy w Coddy.
Program musi przydzielić wystarczająco dużo miejsca, aby tablica o stałym rozmiarze mogła przechowywać swoje dane. Jak komputer może określić ilość miejsca do przydzielenia?
W tym miejscu pojawia się dtype. Każdy dtype ma wartość maksymalną i minimalną, które pozwalają maszynie określić, ile miejsca przydzielić każdej komórce tablicy. Istnieje wiele typów Numpy.
Typy Int to liczby całkowite n-bitowe:
| Typ | Min | Maks. | Potęga | Bity |
| np.int8 | -128 | 127 | 2**8 | 8 |
| np.int16 | -32768 | 32767 | 2**16 | 16 |
| np.int32 | -2147483648 | 2147483647 | 2**32 | 32 |
| np.int64 | -9223372036854775808 | 9223372036854775807 | 2**64 | 64 |
Typy Float:
| Typ |
| np.float16 |
| np.float32 |
| np.float64 |
| np.float128 |
Nie mogę podać wartości minimalnych i maksymalnych, ponieważ są zbyt duże.
Aby samodzielnie sprawdzić wartość maksymalną i minimalną, możesz użyć numpy.iinfo(<i>type</i>) dla typów całkowitych oraz numpy.finfo(<i>dtype</i>) dla typów zmiennoprzecinkowych:
np.iinfo(np.int16).min
np.iinfo(np.int16).maxDlaczego warto zwracać uwagę na dtype?
Załóżmy, że mamy tablicę, w której każdy element reprezentuje pokój z ludźmi. Program śledzi liczbę osób w każdym pokoju.
Przypiszmy tablicy typ np.int8:
rooms = np.array([125, 3, 127], dtype=np.int8)Mamy tu 3 pokoje. Liczba w każdym pokoju jest typu np.int8.
W ostatnim pokoju jest 127 osób!
To maksymalna wartość typu np.int8
Co się stanie, jeśli do tego pokoju wejdzie kolejna osoba?
rooms[-1] += 1
print(rooms)Wynik:
[ 125 3 -128]Spójrz! Liczba 127 zmieniła się w -128. To nie jest oczekiwana wartość, dlatego musimy upewnić się, że używamy właściwego dtype do naszych potrzeb.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wyzwanie
ŁatwyUtwórz funkcję o nazwie dtype_converter, która przyjmuje liczbę bitów typu oraz wartość.
Funkcje zwracają tablicę numpy o wymiarze 0 (pamiętaj, że tablica o wymiarze 0 to po prostu pojedyncza wartość przekazana do np.array) z określonym dtype i wartością zwiększoną o jeden
bits może przyjmować jedną z następujących wartości: 8, 16, 32, 64
Uważnie obserwuj wynik — w niektórych przypadkach testowych wystąpi przepełnienie!
Spróbuj swoich sił
import numpy as np
def dtype_converter(bits, value):
try:
if bits == 8:
return np.array(value+1, dtype=np.int8)
# Write your code here
except:
print("Overflow:", value+1)
Wszystkie lekcje w sekcji Podstawy NumPy
2Tworzenie tablic wielowymiarowych
Wyższy wymiarZrozumienie kształtówWypełnianie stałymi wartościamiTypy NumPyZakresZmiana kształtuPoćwicz samodzielnie: Kompilator Python online