Умножение логической матрицы на вектор, содержащий строки в python - PullRequest
2 голосов
/ 10 января 2020

В настоящее время я работаю над проблемой python, в которой у меня есть матрица (a) и вектор (b), которые я хотел бы объединить в новую матрицу:

a= np.array([[1,0,1],[1,1,0]])
b=['a','b','c']
Desired_output = [['a',0,'c'],['a','b',0]]

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

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 10 января 2020

NumPy на самом деле не подходит для этого, так как вы также работаете со списками строк. Вот один подход, использующий понимание списка и itertools.cycle:

from itertools import cycle

a = [[1,0,1],[1,1,0]]
b = ['a','b','c']

[[j if not j else k for j, k in zip(i,cycle(b))] for i in a]
# [['a', 0, 'c'], ['a', 'b', 0]]
1 голос
/ 10 января 2020

Еще один способ сделать это - добавить начальный ноль к b как

b=np.array([0,'a','b','c'])

. Тогда желаемым результатом будет

Desired_output = np.array([ b[(np.arange(len(v))+1)*v] for v in a ])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...