Coo_matrix和其他矩阵示例

时间:2018-09-27 02:28:17

标签: python matrix

我知道这可能是一个非常广泛的话题,但我想了解更多。我的问题是关于sklearn的coo_matrix。

我从文档中阅读并理解它代表稀疏矩阵的坐标矩阵。此处的“坐标”一词有什么含义?

例如

coo_matrix((1,2))将得到我

array([[0, 0]])

那么在这个例子中坐标甚至意味着什么?还是我们有其他示例将其与其他矩阵区分开?例如csr_matrix,bsr_matrix等。

同样,如果我提出了错误的问题,或者在任何地方都可以找到该问题,请尽可能让我知道或提供链接。

**对于“让我知道”,只需告诉我“您在问一个太简单的问题”或“您的问题可以在其他地方找到,请做一些研究”就可以了,然后我将删除此帖子因为它不相关。

对于“共享链接”,请让我知道在哪里可以学习和了解更多信息。先感谢您。 **

提示:根据某些专家的观点,该帖子被认为是重复的帖子,并且我获得了一些建议,如果其他人发布的答案可能与将来的读者相关,则可以将其保留在此处,因此,我离开它。

1 个答案:

答案 0 :(得分:2)

看起来,一个coo矩阵所需的只是一个行列表,一个列列表和一个值(数据)列表(每个列表大小相同)。重要的是它们的大小必须与您遍历每个元素以获取三元组(行索引,col索引,值)的大小相同。这告诉函数在您要制作的矩阵的(行索引,列索引)处放置一个值。我非常确定它称为坐标格式,因为您传递了具有关联值的坐标(带有行和列)。让我们做一个简单的例子。

row  = np.array([1,3])
col  = np.array([2,0])
data = np.array([5,11])
print(coo_matrix((data, (row, col)), shape=(4, 4)).toarray())

查看每个列表的第一个元素:

row[0] = 1col[0] = 2,因此我们将看看矩阵中的(1,2)元素(在python中记住,索引从0开始)。 value[0] = 5,因此该函数将5作为矩阵中的(1,2)元素放入。

查看每个列表的第二个元素:

row[1] = 3col[1] = 0,因此我们将研究矩阵中的(3,0)元素。 value[1] = 11,因此该函数将11放入矩阵中的(3,0)元素。

其余元素(索引为(1,2)(3,0)的元素除外)为0:

输出:

[[ 0  0  0  0]
 [ 0  0  5  0]
 [ 0  0  0  0]
 [11  0  0  0]]