45 KiB
import numpy as np
NumPy
wymiary
arr = np.array([1, 2, 3, 4, 5, 6, 7])
print(arr)
[1 2 3 4 5 6 7]
type(arr)
numpy.ndarray
type(arr)
numpy.ndarray
np.array(123).shape
()
arr = np.array([[1, 2, 3], [4, 5, 6]])
arr.shape
(2, 3)
print(arr)
[[1 2 3] [4 5 6]]
arr = np.array([[[1, 2, 3], [4, 5, 6]], [[1, 2, 3], [4, 5, 6]]])
arr.shape
(2, 2, 3)
print(arr)
[[[1 2 3] [4 5 6]] [[1 2 3] [4 5 6]]]
zadanie 1
Utwórz jednowymiarową tablicę zawierającą liczby od 10 do 20 włącznie. Wyświetl:
- Tablicę,
- Jej kształt (
shape
), - Jej typ (
type
).
Utwórz macierz 3x2 o elementach (10,20,30,40,50,60) i wyświetl:
- Tablicę,
- Jej kształt (
shape
), - Jej typ (
type
).
dostęp do elementów
arr = np.array([[1,2,3,4,5], [6,7,8,9,10]])
print(arr)
[[ 1 2 3 4 5] [ 6 7 8 9 10]]
arr[1,2]
8
arr[1,-2]
9
arr[1,2:4]
array([8, 9])
arr[1,2:]
array([ 8, 9, 10])
arr[1,:]
array([ 6, 7, 8, 9, 10])
arr[0,:]
array([1, 2, 3, 4, 5])
arr[0,2:4]
array([3, 4])
zadanie 2
- Utwórz dwuwymiarową tablicę NumPy o wymiarach (3,3) zawierającą liczby od 1 do 9.
- Wykonaj następujące operacje na tablicy:
- Wyświetl element znajdujący się w drugim wierszu
- Wyświetl wszystkie elementy znajdujące się w drugim wierszu
- Wyświetl wszystkie elementy znajdujące się w drugiej kolumnie
- Wyświetl macierz, ale bez pierwszego wiersza i bez pierwszej kolumny
Typy danych
arr = np.array([1, 2, 3, 4])
print(arr.dtype)
int64
arr = np.array(['apple', 'banana', 'cherry'])
print(arr.dtype)
<U6
arr = np.array(['apple', 'banana', 'cherrycherry'])
print(arr.dtype)
<U12
arr = np.array(['apple', 'banana', 'cherry'], dtype='U30')
print(arr.dtype)
<U30
import numpy as np
# typ ASCII
arr = np.array([1, 2, 3, 4], dtype='S')
arr.dtype
dtype('S1')
arr = np.array([1, 2, 3, 4], dtype='i4')
print(arr)
print(arr.dtype)
[1 2 3 4] int32
arr = np.array([1, 2, 3, 4], dtype='i2')
print(arr)
print(arr.dtype)
[1 2 3 4] int16
arr = np.array([1, 2, 3, 4], dtype='i1')
print(arr)
print(arr.dtype)
[1 2 3 4] int8
arr*1000000
array([1000000, 2000000, 3000000, 4000000], dtype=int32)
arr = np.array([1, 2, 3, 4])
print(arr)
print(arr.dtype)
[1 2 3 4] int64
arr*1000000
array([1000000, 2000000, 3000000, 4000000])
arr = np.array([1.1, 2.2, 3.9])
print(arr)
print(arr.dtype)
[1.1 2.2 3.9] float64
arr = arr.astype('i')
print(arr)
[1 2 3]
arr = np.array([1, 0, 3])
newarr = arr.astype(bool)
print(newarr)
print(newarr.dtype)
[ True False True] bool
arr = np.array([1, 0, 3.4])
arr
array([1. , 0. , 3.4])
arr.dtype
dtype('float64')
arr = np.array([1, 0, 3.4, 'x'])
arr
array(['1', '0', '3.4', 'x'], dtype='<U32')
Zadanie 3
Instrukcja:
Utwórz tablicę NumPy zawierającą liczby całkowite od 10 do 40 z krokiem co 10. Wyświetl:
- Tablicę,
- Jej typ danych (
dtype
).
Zmień typ danych tablicy z punktu 1 na
float32
. Wyświetl:- Zmienioną tablicę,
- Jej nowy typ danych.
Utwórz tablicę NumPy zawierającą ciągi znaków ("Python", "NumPy", "Coding"). Wyświetl:
- Tablicę,
- Jej typ danych.
Kopiowanie tablicy
arr = np.array([1, 2, 3, 4, 5])
x = arr
arr[0] = 42
arr
array([42, 2, 3, 4, 5])
x
array([42, 2, 3, 4, 5])
arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
arr[0] = 42
arr
array([42, 2, 3, 4, 5])
x
array([1, 2, 3, 4, 5])
import copy
arr = np.array([1, 2, 3, 4, 5])
x = copy.deepcopy(arr)
arr[0] = 42
arr
array([42, 2, 3, 4, 5])
x
array([1, 2, 3, 4, 5])
## Nowe
arr = np.array([1, 2, 3, 4])
arr
array([1, 2, 3, 4])
arr = np.array([1, 2, 3, 4], ndmin=2)
arr
array([[1, 2, 3, 4]])
arr[3]
[0;31m---------------------------------------------------------------------------[0m [0;31mIndexError[0m Traceback (most recent call last) Cell [0;32mIn[55], line 1[0m [0;32m----> 1[0m arr[[38;5;241m3[39m] [0;31mIndexError[0m: index 3 is out of bounds for axis 0 with size 1
arr.squeeze()
array([1, 2, 3, 4])
arr.squeeze()[3]
4
arr
array([[1, 2, 3, 4]])
arr = np.array([1, 2, 3, 4])
arr
array([1, 2, 3, 4])
np.expand_dims(arr, axis=0)
array([[1, 2, 3, 4]])
np.expand_dims(arr, axis=1)
array([[1], [2], [3], [4]])
Zadanie 4
Zadanie 4
Utwórz tablicę NumPy zawierającą liczby [1, 2, 3, 4, 5]. Przypisz ją do zmiennej
x
i zmień pierwszy element tablicy na 50. Wyświetl:- Tablicę
arr
, - Tablicę
x
.
- Tablicę
Zrób kopię tablicy
arr
za pomocą metody.copy()
i zmień pierwszy element tablicyarr
na 50. Wyświetl:- Tablicę
arr
, - Tablicę
x
(po kopii).
- Tablicę
Zrób kopię tablicy
arr
przy użyciu modułucopy.deepcopy
i zmień pierwszy element tablicyarr
na 50. Wyświetl:- Tablicę
arr
, - Tablicę
x
(po głębokiej kopii).
- Tablicę
Utwórz tablicę NumPy o wymiarach (1,4) zawierającą elementy ( [1, 2, 3, 4, 5] ) i wykonaj następujące operacje:
- Wyświetl tablicę.
- Zmień tablicę, aby była jednowymiarowa za pomocą metody
.squeeze()
Reshape jeszcze raze
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
print(arr)
newarr = arr.reshape(4, 3)
print(newarr)
[ 1 2 3 4 5 6 7 8 9 10 11 12] [[ 1 2 3] [ 4 5 6] [ 7 8 9] [10 11 12]]
newarr = arr.reshape(4, 2)
print(newarr)
[0;31m---------------------------------------------------------------------------[0m [0;31mValueError[0m Traceback (most recent call last) Cell [0;32mIn[65], line 1[0m [0;32m----> 1[0m newarr [38;5;241m=[39m arr[38;5;241m.[39mreshape([38;5;241m4[39m, [38;5;241m2[39m) [1;32m 2[0m [38;5;28mprint[39m(newarr) [0;31mValueError[0m: cannot reshape array of size 12 into shape (4,2)
newarr = arr.reshape(4, -1)
print(newarr)
[[ 1 2 3] [ 4 5 6] [ 7 8 9] [10 11 12]]
newarr = arr.reshape(-1, 2)
print(newarr)
[[ 1 2] [ 3 4] [ 5 6] [ 7 8] [ 9 10] [11 12]]
Zadanie 5
Utwórz tablicę NumPy zawierającą liczby [1, 2, 3, ..., 10] o wymiarach (2,5). Wyświetl:
- Tablicę (2,5)
Zmień kształt tablicy na (5,2) za pomocą metody
reshape
. Wyświetl ją.Zmień kształt tablicy na (10,1) za pomocą metody
reshape
. Wyświetl jąUżyj wartości
-1
w jednym z wymiarów w metodziereshape
, aby automatycznie dostosować pozostałe wymiary na (5,-1)Utwórz tablicę o wymiarach (5,1,2,1) na podstawie powyższego przykładu
Obliczenia wektorowe i macierzowe
x = np.array([1,2,4])
y = np.array([100,101,102])
x+y
array([101, 103, 106])
x+100
array([101, 102, 104])
x*100
array([100, 200, 400])
x = np.array([[1,2,4], [10,11,12]])
x
array([[ 1, 2, 4], [10, 11, 12]])
element-wise multiplication
x*100
array([[ 100, 200, 400], [1000, 1100, 1200]])
x
array([[ 1, 2, 4], [10, 11, 12]])
y
array([100, 101, 102])
x*x
array([[ 1, 4, 16], [100, 121, 144]])
x*y
array([[ 100, 202, 408], [1000, 1111, 1224]])
mnożenie macierzy, iloczny skalarny
dot product- iloczyn skaralny dla wektorów mnożenie macierzowe - dla macierzy
y
array([100, 101, 102])
y.dot(y)
30605
y@y
30605
np.matmul(y,y)
30605
x
array([[ 1, 2, 4], [10, 11, 12]])
x.dot(x)
[0;31m---------------------------------------------------------------------------[0m [0;31mValueError[0m Traceback (most recent call last) Cell [0;32mIn[84], line 1[0m [0;32m----> 1[0m x[38;5;241m.[39mdot(x) [0;31mValueError[0m: shapes (2,3) and (2,3) not aligned: 3 (dim 1) != 2 (dim 0)
x.shape
(2, 3)
y.shape
(3,)
x.dot(y)
array([ 710, 3335])
x @ y
array([ 710, 3335])
np.matmul(x,y)
array([ 710, 3335])
x
array([[ 1, 2, 4], [10, 11, 12]])
x[:,1:]
array([[ 2, 4], [11, 12]])
np.matmul(x[:,1:] , x[:,1:])
array([[ 48, 56], [154, 188]])
x
array([[ 1, 2, 4], [10, 11, 12]])
x.T
array([[ 1, 10], [ 2, 11], [ 4, 12]])
Zadanie 6
Utwórz dwie tablice jednowymiarowe
x
iy
:x
zawiera liczby ( [3, 5, 7] ),y
zawiera liczby ( [50, 60, 70] ).
Wykonaj następujące operacje i wyświetl wyniki:
- Dodaj tablicę
x
iy
. - Dodaj do każdego elementu tablicy
x
liczbę 10. - Pomnóż każdy element tablicy
x
przez 5.
- Dodaj tablicę
Utwórz dwuwymiarową tablicę
z
zawierającą: 3 5 7 ], [8,10,12], [10,10,10Następnie wykonaj następujące operacje:
- Pomnóż macierzowo x i z
- Oblicz iloczyn skalrny x i y
## Tworzenie macierzy zerowych, jednostkowych, itp
np.zeros((10,10))
array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]])
np.ones((10,10))
array([[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.], [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.], [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.], [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.], [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.], [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.], [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.], [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.], [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.], [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]])
np.ones((10,10)) * 123
array([[123., 123., 123., 123., 123., 123., 123., 123., 123., 123.], [123., 123., 123., 123., 123., 123., 123., 123., 123., 123.], [123., 123., 123., 123., 123., 123., 123., 123., 123., 123.], [123., 123., 123., 123., 123., 123., 123., 123., 123., 123.], [123., 123., 123., 123., 123., 123., 123., 123., 123., 123.], [123., 123., 123., 123., 123., 123., 123., 123., 123., 123.], [123., 123., 123., 123., 123., 123., 123., 123., 123., 123.], [123., 123., 123., 123., 123., 123., 123., 123., 123., 123.], [123., 123., 123., 123., 123., 123., 123., 123., 123., 123.], [123., 123., 123., 123., 123., 123., 123., 123., 123., 123.]])
np.eye(10)
array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.], [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.], [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.], [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.], [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.], [0., 0., 0., 0., 0., 0., 1., 0., 0., 0.], [0., 0., 0., 0., 0., 0., 0., 1., 0., 0.], [0., 0., 0., 0., 0., 0., 0., 0., 1., 0.], [0., 0., 0., 0., 0., 0., 0., 0., 0., 1.]])
#
arr = np.array([[1, 2, 3], [4, 5, 6]])
for x in arr:
for y in x:
print(y)
1 2 3 4 5 6
#
arr = np.array([[1, 2, 3], [4, 5, 6]])
for i in range(len(arr)):
for j in range(len(arr[i])):
print(arr[i,j])
1 2 3 4 5 6