Добавление значений к ненулевым элементам в разреженной матрице - PullRequest
0 голосов
/ 29 сентября 2018

У меня есть разреженная матрица, в которой я хочу увеличить все значения ненулевых элементов на единицу.Однако я не могу понять это.Есть ли способ сделать это с помощью стандартных пакетов в Python?Любая помощь будет оценена.

Ответы [ 3 ]

0 голосов
/ 29 сентября 2018

Вы можете использовать пакет numpy, который имеет эффективные функции для работы с n-мерными массивами.Вам нужно:

array[array>0] += 1

, где array - это массив элементов вашей матрицы.Пример здесь: `

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]]

Надеюсь, это поможет!

0 голосов
/ 04 апреля 2019

Я не могу комментировать его производительность, но вы можете сделать;

>>> 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
0 голосов
/ 29 сентября 2018

Если ваша матрица имеет 2 измерения, вы можете сделать следующее:

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

Она будет перебирать каждый элемент вашей матрицы и возвращать элемент без каких-либо изменений, если он равен нулю, иначедобавьте 1 к элементу и верните его.

Подробнее об условных обозначениях в списочном понимании в ответе на этот вопрос n.

...