gpt4 book ai didi

python - 来自元组的稀疏数组

转载 作者:太空狗 更新时间:2023-10-30 02:11:48 24 4
gpt4 key购买 nike

我在网上搜索了 Scipy 稀疏矩阵指南,但失败了。如果有人愿意分享它的任何来源,我会很高兴,但现在要质疑:

我有一个元组数组。我想将元组数组更改为稀疏矩阵,其中元组出现在主对角线上和旁边的对角线上,如下例所示。什么是花哨(高效)的方式?

import numpy as np
A=np.asarray([[1,2],[3,4],[5,6],[7,8]])
B=np.zeros((A.shape[0],A.shape[0]+1))
for i in range(A.shape[0]):
B[i,i]=A[i,0]
B[i,i+1]=A[i,1]
print B

输出为:

[[ 1.  2.  0.  0.  0.]
[ 0. 3. 4. 0. 0.]
[ 0. 0. 5. 6. 0.]
[ 0. 0. 0. 7. 8.]]

最佳答案

您可以非常快速地构建这些作为 CSR 矩阵:

>>> A = np.asarray([[1,2],[3,4],[5,6],[7,8]])
>>> rows = len(A)
>>> cols = rows + 1
>>> data = A.flatten() # we want a copy
>>> indptr = np.arange(0, len(data)+1, 2) # 2 non-zero entries per row
>>> indices = np.repeat(np.arange(cols), [1] + [2] * (cols-2) + [1])
>>> import scipy.sparse as sps
>>> a_sps = sps.csr_matrix((data, indices, indptr), shape=(rows, cols))
>>> a_sps.A
array([[1, 2, 0, 0, 0],
[0, 3, 4, 0, 0],
[0, 0, 5, 6, 0],
[0, 0, 0, 7, 8]])

关于python - 来自元组的稀疏数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20126372/

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