将值添加到稀疏矩阵中的非零元素

时间:2018-09-29 03:40:35

标签: python machine-learning sparse-matrix

我有一个稀疏矩阵,我想在其中将所有非零元素的值加1。但是,我无法弄清楚。有没有办法在python中使用标准包来做到这一点?任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:1)

如果矩阵具有2维,则可以执行以下操作:

sparse_matrix = [[element if element==0 else element+1 for element in row ]for row in sparse_matrix]

它将遍历矩阵的每个元素,如果元素等于零,则不做任何更改返回元素,否则将元素加1并返回。

有关the answer for this questio n中列表理解中条件的更多信息。

答案 1 :(得分:1)

您可以使用软件包numpy,该软件包具有处理n维数组的有效功能。您需要的是:

array[array>0] += 1

其中array是矩阵的numpy数组。这里的例子:    `

import numpy as np
my_matrix = [[2,0,0,0,7],[0,0,0,4,0]]
array = np.array(my_matrix);
print("Matrix before incrementing values: \n", array)
array[array>0] += 1
print("Matrix after incrementing values: \n", array)`

输出:

Matrix before incrementing values: 
 [[2 0 0 0 7]
 [0 0 0 4 0]]
Matrix after incrementing values: 
 [[3 0 0 0 8]
 [0 0 0 5 0]]

希望这会有所帮助!

答案 2 :(得分:1)

我无法评论它的表现,但是你可以做到;

>>> a = csr_matrix([[0, 2, 0], [1, 0, 0]])
>>> print(a)
(0, 1)        2
(1, 0)        1
>>> a[a.nonzero()] = a[a.nonzero()] + 1
>>> print(a)
(0, 1)        3
(1, 0)        2

答案 3 :(得分:0)

当您有一个scipy稀疏矩阵(scipy.sparse)时:

import scipy.sparse as sp
my_matrix = [[2,0,0,0,7],[0,0,0,4,0]]
my_matrix = sp.csc_matrix(my_matrix)
my_matrix.data += 1
my_matrix.todense()

返回:

[[3, 0, 0, 0, 8], [0, 0, 0, 5, 0]]