python - 为什么消除零项()不删除零条目?
问题描述
代码
import numpy as np
from scipy.sparse import csr_matrix
arr = np.array([[0,0,0], [0,0,1], [1,0,1]])
mat = csr_matrix(arr)
mat.eliminate_zeros()
print(mat.toarray())
输出
[[0 0 0]
[0 0 1]
[1 0 2]]
根据文档,此方法从矩阵中删除零条目。但是,为什么仍然有零?
从这个网站,我收集了以下内容:
eliminate_zeros
从稀疏模式中删除矩阵中的所有零(即,没有为该位置存储任何值,而之前存储了一个值,但它是 0)。
我仍然可以访问那些零条目。
print(mat[0, 0])
解决方案
文档可能应该更明确。eliminate_zeros
根本不影响稀疏矩阵的逻辑内容。
eliminate_zeros
在不影响其逻辑内容的情况下更改稀疏矩阵的底层表示。它从支持稀疏矩阵的数据数组中删除显式存储的零。它用于减少空间消耗,并为假设没有显式存储零的算法准备稀疏矩阵。
它不会从稀疏矩阵中删除逻辑零。那是不可能的——你不能有一个稀疏矩阵,里面有一堆没有数据的洞。它不像掩码数组。
推荐阅读
- java - JSONException String 无法转换为 JSONObject
- selenium-webdriver - QAF Perfecto - 无法使用 XML 中的测试数据
- html - iOS 在音频上传时使用“捕获”HTML 属性崩溃
- android - 程序类型已经存在:com.android.internal.http.multipart.ByteArrayPartSource
- angular - Angular:ngrx/效果的一些问题
- javascript - 如何调整 Jquery DataTable 中按钮的大小
- javascript - 如何在 GrdiView 中将第一列宽度设置为 Fixed
- angularjs - 组件upperCaseComponent的模板出错
- python - 没有google smtp,还有其他方法可以google登录吗?
- c# - 将 YYYY/DDD 字符串验证为日期