SciPy siyrak ma’lumotlar
Siyrak ma’lumotlar nima?
Siyrak ma’lumotlar — elementlarining aksariyati foydalanilmaydigan (hech qanday ma’lumot tashimaydigan) ma’lumotlardir.
Bu quyidagiga o‘xshash massiv bo‘lishi mumkin:
[1, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0]
Siyrak ma’lumotlar (Sparse Data): elementlarining aksariyati nolga teng bo‘lgan ma’lumotlar to‘plami.
Zich massiv (Dense Array): siyrak massivning teskarisi: undagi qiymatlarning aksariyati nolga teng emas.
Ilmiy hisoblashlarda chiziqli algebradagi xususiy hosilalar bilan ishlaganda siyrak ma’lumotlarga duch kelamiz.
Siyrak ma’lumotlar bilan qanday ishlash kerak
SciPy’da siyrak ma’lumotlar bilan ishlash uchun funksiyalarni taqdim etuvchi scipy.sparse moduli mavjud.
Biz asosan siyrak matritsalarning ikki turidan foydalanamiz:
CSC - Compressed Sparse Column (siqilgan siyrak ustun). Samarali arifmetik amallar va ustunlarni tez kesib olish (slicing) uchun.
CSR - Compressed Sparse Row (siqilgan siyrak qator). Qatorlarni tez kesib olish (slicing) va matritsani vektorga tezroq ko‘paytirish uchun
Ushbu darslikda biz CSR matritsasidan foydalanamiz.
CSR matritsasi
CSR matritsasini scipy.sparse.csr_matrix() funksiyasiga massiv uzatish orqali yaratishimiz mumkin.
Misol
Massivdan CSR matritsasini yarating:
import numpy as np
from scipy.sparse import csr_matrix
arr = np.array([0, 0, 0, 0, 0, 1, 1, 0, 2])
print(csr_matrix(arr))
O‘zingiz sinab ko‘ring »
Yuqoridagi misol quyidagini qaytaradi:
(0, 5) 1 (0, 6) 1 (0, 8) 2
Natijadan qiymatga ega 3 ta element borligini ko‘rishimiz mumkin.
1-element 0-qatorning 5-pozitsiyasida joylashgan va qiymati
1 ga teng.
2-element 0-qatorning 6-pozitsiyasida joylashgan va qiymati
1 ga teng.
3-element 0-qatorning 8-pozitsiyasida joylashgan va qiymati
2 ga teng.
Siyrak matritsa metodlari
Saqlangan ma’lumotlarni (nol elementlarni emas) data xususiyati yordamida ko‘rish:
Misol
import numpy as np
from scipy.sparse import csr_matrix
arr = np.array([[0, 0, 0], [0, 0, 1], [1, 0, 2]])
print(csr_matrix(arr).data)
O‘zingiz sinab ko‘ring »
Noldan farqli elementlarni count_nonzero() metodi yordamida sanash:
Misol
import numpy as np
from scipy.sparse import csr_matrix
arr = np.array([[0, 0, 0], [0, 0, 1], [1, 0, 2]])
print(csr_matrix(arr).count_nonzero())
O‘zingiz sinab ko‘ring »
Matritsadan nol yozuvlarni eliminate_zeros() metodi yordamida olib tashlash:
Misol
import numpy as np
from scipy.sparse import csr_matrix
arr = np.array([[0, 0, 0], [0, 0, 1], [1, 0, 2]])
mat = csr_matrix(arr)
mat.eliminate_zeros()
print(mat)
O‘zingiz sinab ko‘ring »
Takroriy yozuvlarni sum_duplicates() metodi yordamida bartaraf etish:
Misol
Takroriy yozuvlarni ularni qo‘shish orqali bartaraf etish:
import numpy as np
from scipy.sparse import csr_matrix
arr = np.array([[0, 0, 0], [0, 0, 1], [1, 0, 2]])
mat = csr_matrix(arr)
mat.sum_duplicates()
print(mat)
O‘zingiz sinab ko‘ring »
tocsc() metodi yordamida csr formatidan csc formatiga o‘tkazish:
Misol
import numpy as np
from scipy.sparse import csr_matrix
arr = np.array([[0, 0, 0], [0, 0, 1], [1, 0, 2]])
newarr = csr_matrix(arr).tocsc()
print(newarr)
O‘zingiz sinab ko‘ring »
Eslatma: Yuqorida keltirilgan siyrak matritsalarga xos amallardan tashqari, siyrak matritsalar oddiy matritsalar qo‘llab-quvvatlaydigan barcha amallarni ham qo‘llab-quvvatlaydi, masalan, shaklini o‘zgartirish (reshaping), yig‘indini hisoblash, arifmetik amallar, broadcasting va boshqalar.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
