Выбор значений списка на основе двоичных значений матрицы? - PullRequest
0 голосов
/ 25 мая 2020

Я пытаюсь отобразить элементы двоичной матрицы в список целых чисел. Необходимо l oop по каждой строке матрицы, если значение равно 1, то выбирается элемент из соответствующего списка, а если значение равно 0, элемент не выбирается. Конечная цель - получить вектор, содержащий сумму каждой строки соответствующих значений. Например:

listOfNums: [1,2,3,4,5]

m1= [[1,0,1,1,1] 
[0,0,0,0,1] 
[1,0,0,0,1]]

>>>[13,5,6]

Вот то, что я пробовал до сих пор, но я продолжаю получать ошибки индекса

  def corrspondingVal(self, x):
    nums = [1,2,3,4,5,6,7,8,9,10]
    return [self.nums[i] for i in range(x) if x[i]] 

  def sumPerRow(self):
    v = np.apply_along_axis(self.correspondingVals(self.matrix1), axis=1, arr=self.matrix1)
    return v

(self.matrix1 - это (10,5) матрица двоичных значений )

Ответы [ 2 ]

3 голосов
/ 25 мая 2020

Вот один короткий путь, хотя умножение может быть дорогим.

np.sum(m1 * list, axis=1)

Еще лучше

np.dot(m1, list)
0 голосов
/ 25 мая 2020

Без numpy:

listOfSums = [ sum(num for idx,num in enumerate(listOfNums) if row[idx]) for row in m1 ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...