Menu
Coddy logo textTech

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:

TypMinMaks.PotęgaBity
np.int8-1281272**88
np.int16-32768327672**1616
np.int32-214748364821474836472**3232
np.int64-922337203685477580892233720368547758072**6464

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).max

Dlaczego 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.

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

challenge icon

Wyzwanie

Łatwy

Utwó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

Poćwicz samodzielnie: Kompilator Python online