Menu
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

SciPy 稀疏数据


什么是稀疏数据

稀疏数据是指大部分元素未被使用(元素不包含任何信息)的数据。

它可以是一个像这样的数组

[1, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0]

稀疏数据:是指大部分元素值为零的数据集。

稠密数组:是稀疏数组的反义词:大部分元素值为零。

在科学计算中,当我们在线性代数中处理偏导数时,会遇到稀疏数据。


如何处理稀疏数据

SciPy 有一个模块,scipy.sparse,它提供了处理稀疏数据的函数。

我们主要使用两种类型的稀疏矩阵

CSC - 压缩稀疏列。用于高效的算术运算,快速列切片。

CSR - 压缩稀疏行。用于快速行切片,更快的矩阵向量积

在本教程中,我们将使用CSR矩阵。


CSR 矩阵

我们可以通过将数组传递给函数scipy.sparse.csr_matrix()来创建 CSR 矩阵。

示例

从数组创建 CSR 矩阵

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))
自己试一试 »

上面的示例返回

  (0, 5)	1
  (0, 6)	1
  (0, 8)	2

从结果中我们可以看到有 3 个元素有值。

第 1 个元素位于行0位置5,值为 1

第 2 个元素位于行0位置6,值为 1

第 3 个元素位于行0位置8,值为 2



稀疏矩阵方法

使用data属性查看存储的数据(不是零元素)

示例

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)
自己试一试 »

使用count_nonzero()方法统计非零元素个数

示例

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())
自己试一试 »

使用eliminate_zeros()方法从矩阵中删除零元素

示例

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)
自己试一试 »

使用sum_duplicates()方法消除重复项

示例

通过将重复项相加来消除重复项

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)
自己试一试 »

使用tocsc()方法将 csr 转换为 csc

示例

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)
自己试一试 »

注意:除了提到的稀疏特定操作外,稀疏矩阵还支持普通矩阵支持的所有操作,例如重塑、求和、算术运算、广播等。



×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.