EEM-241 İleri Düzey Programlama
2024-2025 Güz Dönemi
Ders 10 - NumPy
pip install numpy
import numpy as np
my_list = [1,2,3]
my_list
[1, 2, 3]
np.array(my_list,)
array([1, 2, 3])
my_matrix = [[1,2,3],[4,5,6],[7,8,9]]
my_matrix
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
np.array(my_matrix)
array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
arange
np.arange(0,10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.arange(0,11,2)
array([ 0, 2, 4, 6, 8, 10])
sıfırlar ve birler
np.zeros(3)
array([0., 0., 0.])
np.zeros((5,5))
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.]])
np.ones(3)
array([1., 1., 1.])
np.ones((3,3))
array([[1., 1., 1.], [1., 1., 1.], [1., 1., 1.]])
linspace
np.linspace(0,10,3)
array([ 0., 5., 10.])
np.linspace(0,1,9)
array([0. , 0.125, 0.25 , 0.375, 0.5 , 0.625, 0.75 , 0.875, 1. ])
Random
rand
[0, 1)
arasında değerler
np.random.rand(2)
array([0.91425598, 0.13678438])
np.random.rand(2,3)
array([[0.49006695, 0.87254349, 0.04637703], [0.98931526, 0.77884387, 0.00985389]])
randint
[düşük, yüksek)
tamsayılar arasında
np.random.randint(1,100)
61
np.random.randint(1,100,10)
array([54, 56, 9, 80, 16, 50, 74, 67, 34, 71])
np.random.randint(1,100,(2,3))
array([[51, 96, 35], [18, 92, 23]])
max min argmax argmin
ranarr = np.random.randint(0,50,10)
ranarr
array([16, 42, 42, 38, 27, 5, 0, 4, 24, 37])
ranarr.max()
42
ranarr.argmax()
1
ranarr.min()
0
ranarr.argmin()
6
Shape Reshape
arr = np.arange(25)
arr
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24])
arr.reshape(5,5)
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
arr = np.arange(25)
arr.shape
(25,)
arr.reshape(1,25)
array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]])
arr.reshape(25,1)
array([[ 0], [ 1], [ 2], [ 3], [ 4], [ 5], [ 6], [ 7], [ 8], [ 9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24]])
arr=np.arange(0,20)
arr
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
a=arr.reshape(10,-1)
a
array([[ 0, 1], [ 2, 3], [ 4, 5], [ 6, 7], [ 8, 9], [10, 11], [12, 13], [14, 15], [16, 17], [18, 19]])
a.shape
(10, 2)
b=arr.reshape(4,-1)
b.shape
(4, 5)
indeks
arr = np.arange(0,5.1,0.5)
arr
array([0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5, 5. ])
arr[8]
4.0
arr[1:5]
array([0.5, 1. , 1.5, 2. ])
arr[0:5]
array([0. , 0.5, 1. , 1.5, 2. ])
Atama
arr[0]=10
arr[1:5]=100
arr
array([ 10. , 100. , 100. , 100. , 100. , 2.5, 3. , 3.5, 4. , 4.5, 5. ])
arr = np.arange(0,11)
arr
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
slice_of_arr = arr[0:6]
slice_of_arr
array([0, 1, 2, 3, 4, 5])
slice_of_arr[:]=99
slice_of_arr
array([99, 99, 99, 99, 99, 99])
Orjinal dizi:
arr
array([99, 99, 99, 99, 99, 99, 6, 7, 8, 9, 10])
arr_copy = arr.copy()
arr_copy
array([99, 99, 99, 99, 99, 99, 6, 7, 8, 9, 10])
Çok boyutlu diziler
arr_2d = np.array(([5,10,15],[20,25,30],[35,40,45]))
arr_2d
array([[ 5, 10, 15], [20, 25, 30], [35, 40, 45]])
arr_2d[1]
array([20, 25, 30])
arr_2d[1][0]
20
arr_2d[1,0]
20
arr_2d[:2,1:]
array([[10, 15], [25, 30]])
arr_2d[2]
array([35, 40, 45])
arr_2d[2,:]
array([35, 40, 45])
arr2d = np.zeros((10,10))
arr_length = arr2d.shape[1]
for i in range(arr_length):
arr2d[i] = i
arr2d
array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.], [2., 2., 2., 2., 2., 2., 2., 2., 2., 2.], [3., 3., 3., 3., 3., 3., 3., 3., 3., 3.], [4., 4., 4., 4., 4., 4., 4., 4., 4., 4.], [5., 5., 5., 5., 5., 5., 5., 5., 5., 5.], [6., 6., 6., 6., 6., 6., 6., 6., 6., 6.], [7., 7., 7., 7., 7., 7., 7., 7., 7., 7.], [8., 8., 8., 8., 8., 8., 8., 8., 8., 8.], [9., 9., 9., 9., 9., 9., 9., 9., 9., 9.]])
arr2d[[2,4,6,8]]
array([[ 2., 2., 2., 2., 2., 2., 2., 2., 2., 2.], [ 4., 4., 4., 4., 4., 4., 4., 4., 4., 4.], [ 6., 6., 6., 6., 6., 6., 6., 6., 6., 6.], [ 8., 8., 8., 8., 8., 8., 8., 8., 8., 8.]])
arr2d[[6,4,2,7]]
array([[6., 6., 6., 6., 6., 6., 6., 6., 6., 6.], [4., 4., 4., 4., 4., 4., 4., 4., 4., 4.], [2., 2., 2., 2., 2., 2., 2., 2., 2., 2.], [7., 7., 7., 7., 7., 7., 7., 7., 7., 7.]])
Karşılaştırma
arr = np.arange(1,11)
arr
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
arr > 4
array([False, False, False, False, True, True, True, True, True, True])
bool_arr = arr>4
bool_arr
array([False, False, False, False, True, True, True, True, True, True])
arr[bool_arr]
array([ 5, 6, 7, 8, 9, 10])
arr[arr>2]
array([ 3, 4, 5, 6, 7, 8, 9, 10])
Aritmetik İşlemler
arr = np.arange(0,10)
arr + arr
array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18])
arr * arr
array([ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81])
arr - arr
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
arr/arr
D:\Temps\Temp\ipykernel_12020\1862401812.py:1: RuntimeWarning: invalid value encountered in true_divide arr/arr
array([nan, 1., 1., 1., 1., 1., 1., 1., 1., 1.])
1/arr
D:\Temps\Temp\ipykernel_12020\255282349.py:1: RuntimeWarning: divide by zero encountered in true_divide 1/arr array([ inf, 1. , 0.5 , 0.33333333, 0.25 , 0.2 , 0.16666667, 0.14285714, 0.125 , 0.11111111])
arr**3
array([ 0, 1, 8, 27, 64, 125, 216, 343, 512, 729], dtype=int32)
matris çarpımı
a=np.random.randint(0,20,(4,3))
a
array([[13, 17, 1], [19, 14, 10], [16, 2, 19], [ 8, 15, 12]])
b=np.random.randint(0,20,(3,5))
b
array([[ 5, 1, 12, 6, 15], [ 2, 3, 6, 18, 18], [13, 9, 3, 19, 18]])
np.matmul(a,b)
array([[112, 73, 261, 403, 519], [253, 151, 342, 556, 717], [331, 193, 261, 493, 618], [226, 161, 222, 546, 606]])
a@b
array([[112, 73, 261, 403, 519], [253, 151, 342, 556, 717], [331, 193, 261, 493, 618], [226, 161, 222, 546, 606]])
Dizi fonksiyonları
np.sqrt(arr)
array([0. , 1. , 1.41421356, 1.73205081, 2. , 2.23606798, 2.44948974, 2.64575131, 2.82842712, 3. ])
#e^
np.exp(arr)
array([1.00000000e+00, 2.71828183e+00, 7.38905610e+00, 2.00855369e+01, 5.45981500e+01, 1.48413159e+02, 4.03428793e+02, 1.09663316e+03, 2.98095799e+03, 8.10308393e+03])
np.max(arr)
9
np.sin(arr)
array([ 0. , 0.84147098, 0.90929743, 0.14112001, -0.7568025 , -0.95892427, -0.2794155 , 0.6569866 , 0.98935825, 0.41211849])
determinant ve n bilinmeyenli denklemin çözümü
A=np.array([[1,1,1],[2,1,2],[1,2,3]])
y=np.array([9,15,20])
from numpy.linalg import solve
from numpy.linalg import det
det(A)
-1.9999999999999993
solve(A,y)
array([2., 3., 4.])