SciPy siyrak ma’lumotlar


ULASHISH

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!