gpt4 book ai didi

python - 切片稀疏 scipy 矩阵以对每第 10 行和第 10 列进行子采​​样

转载 作者:太空宇宙 更新时间:2023-11-04 01:23:58 24 4
gpt4 key购买 nike

我正在尝试将 scipy 稀疏矩阵子采样为这样的 numpy 矩阵,以获取每 10 行和每 10 列:

connections = sparse.csr_matrix((data,(node1_index,node2_index)),
shape=(dimensions,dimensions))
connections_sampled = np.zeros((dimensions/10, dimensions/10))
connections_sampled = connections[::10,::10]

但是,当我运行它并查询 connections_sampled 的形状时,我得到的是连接的原始尺寸,而不是缩小了 10 倍的尺寸。

这种类型的子采样现在可以用于稀疏矩阵吗?当我使用较小的矩阵时它似乎有效,但我无法得到它来给出正确答案。

最佳答案

您不能对 CSR 矩阵的每 10 行和第 10 列进行采样,至少在 Scipy 0.12 中不行:

>>> import scipy.sparse as sps
>>> a = sps.rand(1000, 1000, format='csr')
>>> a[::10, ::10]
Traceback (most recent call last):
...
ValueError: slicing with step != 1 not supported

不过,您可以先转换为 LIL 格式矩阵:

>>> a.tolil()[::10, ::10]
<100x100 sparse matrix of type '<type 'numpy.float64'>'
with 97 stored elements in LInked List format>

如您所见,形状已正确更新。如果你想要一个 numpy 数组,而不是稀疏矩阵,请尝试:

>>> a.tolil()[::10, ::10].A
array([[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
...,
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.]])

关于python - 切片稀疏 scipy 矩阵以对每第 10 行和第 10 列进行子采​​样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19368414/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com