آموزش پایتون – بخش چهارم – Numpy

در بخش سوم آموزش پایتون ، تا مبحث Lambda Function پیش رفتیم. در ادامه این نوشته در مورد numpy بحث را ادامه خواهیم داد.

Data processing with NumPy

import numpy as np
lst = [1,2,3]
np.array(lst)

mat = [[1,2,3], [4,5,6], [7,8,9]]
np.array(mat)

بدست آوردن ساختار آرایه:

np.array(mat).shape

arange

list(range(10))

np.arange(0,50,2)

Linspace

np.linspace(0,10,3)

np.linspace(0,100,30)

Random: creating random numbers

np.random.random(4)

np.random.random(4)*10

np.random.random((3,4))

# rand
np.random.rand(10)

np.random.rand(5,2)

np.random.rand(5,2,3)

تفاوتlinspcae و randint

در linspace فاصله ها به طور مساوی ایجاد میشوند ولی در randint به طور رندوم خواهد بود.

اگر بخواهیم منفی هم داشته باشیم:

# randn
np.random.randn(10)

np.random.randn(100)


randint

از این تابع برای تولید اعداد صحیح رندوم استفاده میشود:

np.random.randint(2,4)

np.random.randint(10,50)

np.random.randint(0,50,10)


تولید آرایه 3 در 4 تصادفی که مقادیر آن بین 0 تا 50 باشند و یا 5 در 10 که مقادیر آن کمتر از 50 باشند:

np.random.randint(0,50, (3,4))

np.random.randint(0,100, (5,10))

آرایه صفرها:

np.zeros(3)

np.zeros((3,2))

آرایه 5 در 5 از صفرها

np.zeros((5,5))

آرایه یک ها

np.ones(4)

np.ones((3,4))

ماتریس همانی:

np.eye(3,3)

np.eye(5,5)

np.eye(4,6)


آرایه Full

np.full((4,3), 7)

np.full((4,5), 100)

Working with Arrays : Array Attributes and Methods

آرایه تک بعدی:

arr = np.arange(25)
arr
result:
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.shape

دستورreshape :

arr.reshape(5,5)
result:
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]])

آرایه تصادفی و سپس reshape آن:

arr_random.reshape(2,5)
result:
array([[12, 18, 11, 12, 37],
       [29,  0,  5, 30, 22]])

sort

دیفالت آن این است که بر حسب ردیف سورت میکند .اما به axis=0 میتوان در راستای ستون سورت کرد.

b = np.random.randn(4,4)
b
b.sort()
b.sort(axis=0)

dtype

my_arr = np.array([1,2,3,4])
my_arr.dtype

ایجاد آرایه و تخصیص نوع داده:

my_arr = np.array([1,2,3,4], dtype='float64')
my_arr.dtype

max,min,argmax,argmin, mean(), median()

arr = np.random.randint(0,40,10)
arr
arr.max()
arr.min()
arr.argmax()
arr.argmin()
arr.mean()

حذف عنصر آرایه:

arr=[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10]
arr
np.delete(arr, 3)

#insert
np.insert(arr, 2, 99)

در راستای سطر، خط 2 را پاک کن:

arr3 = np.arange(0,25).reshape(5,5)
arr3
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]])


np.delete(arr3, [2], axis = 0)
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [15, 16, 17, 18, 19],
       [20, 21, 22, 23, 24]])

پاک کردن در راستای ستون ها:
np.delete(arr3, [2], axis = 1)
array([[ 0,  1,  3,  4],
       [ 5,  6,  8,  9],
       [10, 11, 13, 14],
       [15, 16, 18, 19],
       [20, 21, 23, 24]])

99 کردن سطر 2:
np.insert(arr2, 2, 99, axis = 0)
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [99, 99, 99, 99, 99]])

concatenate, vstak, hstack

a = np.array([[1,2], [3,4]])
result:
array([[1, 2],
       [3, 4]])

b = np.array([[5,6], [7,8]])
result:
array([[5, 6],
       [7, 8]])

np.vstack((a,b))
array([[1, 2],
       [3, 4],
       [5, 6],
       [7, 8]])

np.hstack((a,b))
array([[1, 2, 5, 6],
       [3, 4, 7, 8]])

# concatenate
np.concatenate((a,b), axis = 0)
array([[1, 2],
       [3, 4],
       [5, 6],
       [7, 8]])

np.concatenate((a,b), axis = 1)
array([[1, 2, 5, 6],
       [3, 4, 7, 8]])



نکته:

تفاوت mead و median چیست؟ اولی میانگین و دومی به معنای میانه است.

توابع ریاضی در Numpy:

محاسبه مجذور:

import numpy as np
arr = np.arange(0,25)
np.sqrt(arr)
array([0.        , 1.        , 1.41421356, 1.73205081, 2.        ,
       2.23606798, 2.44948974, 2.64575131, 2.82842712, 3.        ,
       3.16227766, 3.31662479, 3.46410162, 3.60555128, 3.74165739,
       3.87298335, 4.        , 4.12310563, 4.24264069, 4.35889894,
       4.47213595, 4.58257569, 4.69041576, 4.79583152, 4.89897949])

محاسبه مربع:

np.square(arr)

محاسبه توان سوم:

np.power(arr, 3)

لگاریتم:

np.log(arr)

sin

np.sin(arr)

tan

np.tan(arr)

ضرب نظیر به نظیر

a = np.arange(1,6)
b = np.arange(2,7)
np.multiply(a,b)  # peer to peer multiplication

ضرب ماتریسی:

np.matmul(a,b)   # matric product

Numpy Indexing and Selection

arr = np.arange(15,25)
arr
arr[1:5]
arr[:7]
arr[2:]

indexing 2D arrays (matrices)

mat = np.random.randint(1,100, 25).reshape(5,5)
mat
array([[14, 28, 20, 61, 67],
       [ 1, 44, 61, 54,  1],
       [83, 61, 37,  7, 49],
       [59, 37, 50, 59,  1],
       [19, 31,  1, 60, 58]])

mat[1][3]

mat[1:3]


m = np.arange(0,100).reshape(10,10)
m
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, 25, 26, 27, 28, 29],
       [30, 31, 32, 33, 34, 35, 36, 37, 38, 39],
       [40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
       [50, 51, 52, 53, 54, 55, 56, 57, 58, 59],
       [60, 61, 62, 63, 64, 65, 66, 67, 68, 69],
       [70, 71, 72, 73, 74, 75, 76, 77, 78, 79],
       [80, 81, 82, 83, 84, 85, 86, 87, 88, 89],
       [90, 91, 92, 93, 94, 95, 96, 97, 98, 99]])

m[3:]

double slicing

m[3:,4:]
array([[34, 35, 36, 37, 38, 39],
       [44, 45, 46, 47, 48, 49],
       [54, 55, 56, 57, 58, 59],
       [64, 65, 66, 67, 68, 69],
       [74, 75, 76, 77, 78, 79],
       [84, 85, 86, 87, 88, 89],
       [94, 95, 96, 97, 98, 99]])

سطور 2تا 7 وستونهای 3 تا 6:
m[2:8, 3:7]

سطور 1 تا 7 و یک درمیان:
m[1:8:2]

سطور 2و4و6:
m[[2,4,6]]


Selection (Query)

arr = np.arange(1,21)
arr
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17,
       18, 19, 20])

arr>7
array([False, False, False, False, False, False, False,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True])

arr[arr % 3 == 0]

arr[(arr % 3 == 0)& (arr % 5 == 0)]

arr[(arr % 3 == 0)| (arr % 5 == 0)]


دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.