gpt4 book ai didi

python - 如何在 for 循环中使用 vstack 以便将 csr_matrix 矩阵附加在一起

转载 作者:行者123 更新时间:2023-11-28 21:13:18 29 4
gpt4 key购买 nike

我使用以下代码将 csr_matrix 类型的矩阵连接在一起。它基于 How to flatten a csr_matrix and append it to another csr_matrix?

#! /usr/bin/python
# -*- coding: utf-8 -*-
import re, sys
import os
import numpy

from scipy.sparse import csr_matrix
from scipy.sparse import vstack


if __name__ == "__main__":

centroids = []
for i in range(0,3):
a = csr_matrix([[i,i,i]])
centroids = vstack((centroids, a), format='csr')

print "centroids : " + str(centroids.shape[0]) +" "+ str(centroids.shape[1])

作为我得到的输出

centroids : 4  3

质心的大小应为 3 而不是 4。我是否正确连接它们?


我尝试了以下方法,看看是否可以忽略第一行:

from sklearn.metrics.pairwise import euclidean_distances
matrix = euclidean_distances(centroids[1:][:], centroids[1:][:])
print matrix
[[ 0. 1.73205081 3.46410162]
[ 1.73205081 0. 1.73205081]
[ 3.46410162 1.73205081 0. ]]

我觉得还行。

最佳答案

不要在循环中使用 vstack,因为在每次迭代中更改矩阵的大小和稀疏性代价高昂。而是这样做:

centroids = []
for i in range(3):
a = csr_matrix([[i, i, i]])
centroids.append(a)
centroids = vstack(centroids, format="csr")

关于python - 如何在 for 循环中使用 vstack 以便将 csr_matrix 矩阵附加在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32994196/

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