Dersler

View on GitHub

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ı

universal array functions

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