2015-05-31 3 views
0

У меня есть двоичные векторы X1-X6 и Y1-Y6. Я хочу найти внешний продукт между каждым вектором в X и его соответствующим вектором в Y, например. внешнее произведение (X1, Y1), внешнее произведение (X2, Y2) и т. д. Я использую numpy.outer (X1, Y1). Теперь я хочу создать цикл for, чтобы пройти через все из них, а затем ИЛИ их выходы вместе. Ниже мой код. Я получаю сообщение об ошибке «SyntaxError: не может назначить оператору», когда я удаляю% d рядом с w на LHS уравнения. Я получаю еще одну ошибку, что X не определен. Итак, кто-нибудь может помочь мне в решении этой проблемы.Назначить управляющие переменные in for loop python

X1=[1, 0, 0, 1, 0] 
X2=[0, 0, 0, 1, 1] 
X3=[1, 0, 1, 0, 0] 
X4=[1, 0, 0, 0, 1] 
X5=[1, 1, 0, 0, 0] 
X6=[0, 1, 0, 1, 0] 

Y1=[[1], [0], [0], [0], [0]] 
Y2=[[0], [0], [1], [0], [0]] 
Y3=[[0], [1], [0], [0], [0]] 
Y4=[[0], [0], [0], [1], [0]] 
Y5=[[0], [0], [0], [0], [1]] 
Y6=[[0], [0], [0], [1], [0]] 

w=(5,5) 
wt= np.zeros((w),dtype=np.integer) 

for i in range (1, 6): 
    w%d=np.outer(X%d,Y%d) % (i, i, i) 
    wt=wt or w%d % i 
print wt 

Благодаря

+0

Вы можете добавить свой ожидаемый выход на вопрос? – Kasramvd

+0

что вы ожидали 'w% d = np.outer (X% d, Y% d)% (i, i, i)' делать точно? –

+0

** 1-я итерация: **, 'w1 = np.outer (X1, Y1)', 'wt = wt или w1', ** 2-я итерация: **, 'w2 = np.outer (X2 , Y2) ', ' wt = wt или w2 ', и так далее. – motaha

ответ

1

Вы можете поместить свои переменные в массиве:

X = [X1, X2, ..., X6] 
Y = [Y1, Y2, ..., Y6] 

Таким образом:

W = [np.outer(x, y) for (x,y) in zip(X,Y)] 
wt = reduce(lambda a,b: a or b, 
      W, 
      np.zeros((5,5),dtype=np.integer)) 
+0

Спасибо, однако, я получаю ошибку «ValueError: значение истинности массива с более чем одним элементом неоднозначно. Используйте a.any() или a.all()" – motaha