Ахборот хавфсизлигига бўладиган хавфлар



Yüklə 136,89 Kb.
Pdf görüntüsü
səhifə2/2
tarix04.10.2023
ölçüsü136,89 Kb.
#152101
1   2
Python tili kutubxonalari bilan ishlash. Ilmiy hisob-kitoblar uchun NumPy kutubxonasi

=
[]
for
i
in
range
(
len
(
a
)):
c
.
append
(
a
[
i
]
*
b
[
i
])
Bu to'g'ri javobni beradi, lekin agar 
a
va 
b
har birida millionlab raqamlar bo'lsa, 
biz Python-da loopning samarasizligi uchun to'laymiz. Xuddi shu vazifani C tilida 
yozish orqali tezroq bajarishimiz mumkin (aniqlik uchun biz o'zgaruvchan 
deklaratsiyalar va ishga tushirishlarni, xotirani ajratishni va hokazolarni e'tiborsiz 
qoldiramiz). 
for
(
i
=
0
;
i
<
rows
;
i
++
):
{
c
[
i
]
=
a
[
i
]
*
b
[
i
];
}
Bu Python kodini sharhlash va Python obyektlarini manipulyatsiya qilish 
bilan bog'liq barcha xarajatlarni tejaydi, lekin Python-da kodlashdan olingan foyda 
hisobiga. Bundan tashqari, talab qilinadigan kodlash ishi ma'lumotlarimizning 
o'lchamlari bilan ortadi. Masalan, 2-D massivda C kodi (avvalgidek qisqartirilgan) 
kengayadi. 
for
(
i
=
0
;
i
<
rows
;
i
++
):
{
for
(
j
=
0
;
j
<
columns
;
j
++
):
{
c
[
i
][
j
]
=
a
[
i
][
j
]
*
b
[
i
][
j
];
}
}
NumPy 
bizga 
har 
ikki 
dunyoning 
eng 
yaxshisini 
beradi: 
ndarray
ishtirok etganda element bo'yicha operatsiyalar "standart rejim" 
bo'ladi , lekin element bo'yicha operatsiya oldindan tuzilgan C kodi orqali tez 
bajariladi. NumPy ichida 
c
=
a
*
b
oldingi misollar bajaradigan ishni C darajasiga yaqin tezlikda bajaradi, lekin 
kodning soddaligi bilan biz Python-ga asoslangan narsadan kutamiz. Darhaqiqat, 



NumPy idiomasi yanada sodda! Ushbu oxirgi misol NumPy-ning ko'p quvvatining 
asosi bo'lgan ikkita xususiyatini ko'rsatadi: vektorizatsiya va eshittirish. 
Nima uchun NumPy tez? 
Vektorlashtirish kodda hech qanday aniq aylanish, indeksatsiya va 
hokazolarning yo'qligini tavsiflaydi - bu narsalar, albatta, optimallashtirilgan
oldindan tuzilgan C kodida "sahna ortida" sodir bo'ladi. Vektorlashtirilgan kod juda 
ko'p afzalliklarga ega, ular orasida: 

vektorlashtirilgan kod qisqaroq va o'qish osonroq 

kamroq kod satrlari odatda kamroq xatolarni bildiradi 

kod standart matematik belgilarga ko'proq o'xshaydi (odatda, matematik 
konstruktsiyalarni to'g'ri kodlashni osonlashtiradi) 

vektorlashtirish 
natijasida 
ko'proq 
"Pythonik" 
kod 
paydo 
bo'ladi. Vektorizatsiyasiz bizning kodimiz samarasiz va o'qish qiyin 
bo'lgan 
for
tsikllar bilan to'lib toshgan bo'lar edi . 
Broadcasting - bu operatsiyalarning yashirin element-element harakatini 
tavsiflash uchun ishlatiladigan atama; Umuman olganda, NumPy da barcha 
operatsiyalar, nafaqat arifmetik amallar, balki mantiqiy, bitli, funktsional va 
hokazolar ham shu yashirin elementma-element rejimida harakat qiladi, ya'ni 
translyatsiya qiladi. Bundan tashqari, yuqoridagi misol, 
a
va 
b
kichik array bunday 
katta shakliga "kengayadigan", deb taqdim ko'p qirrali shu shaklda suhbat yoki 
skalar va array yoki turli shakl bilan ham ikki tillo, bo'lishi mumkin natijada olingan 
translyatsiyaning bir ma'noli bo'lishining usuli. Eshittirishning batafsil “qoidalari” 
uchun 
basics.broadcasting
ga qarang . 
Yana kim NumPy dan foydalanadi? 
NumPy yana 
ndarray
dan boshlab, ob'ektga yo'naltirilgan yondashuvni to'liq 
qo'llab-quvvatlaydi . Masalan, 
ndarray
ko'plab usullar va atributlarga ega bo'lgan 
sinfdir. Uning ko'pgina usullari eng tashqi NumPy nom maydonidagi funktsiyalar 
bilan aks ettirilgan bo'lib, dasturchiga o'zlari afzal ko'rgan paradigmada kodlash 
imkonini 
beradi. Ushbu 
moslashuvchanlik 
NumPy 
massiv 
dialekti 
va 
NumPy 
ndarray
sinfiga Pythonda qo'llaniladigan ko'p o'lchovli ma'lumotlar 
almashinuvining 
de-fakto
tiliga aylanishiga imkon berdi . 

Yüklə 136,89 Kb.

Dostları ilə paylaş:
1   2




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin