2016-04-10 2 views
1

У меня есть матрица 'y', и я хочу добавить одно из чисел в каждую строку y. Затем я устанавливаю матрицу 'x', в которой первый столбец устанавливает тот, который я хочу Добавить. Я использую следующий код:Как обрабатывать тип anano

import numpy 
import theano 
import theano.tensor as T 

x = T.matrix('x') 
y = T.matrix('y') 
z = T.sum(y[T.arange(1,5),x[:,0]]) 

f = theano.function(inputs=[x,y],outputs=z) 

x = numpy.asarray([[1],[2],[3],[4],[0]]) 
y = numpy.ones(5,5) 
print(f([x,y])) 

Но это cann't работы. Будет ошибка грамматики. почему не работает этот код?

+1

Можете ли вы привести несколько примеров ввода-вывода? – malioboro

+0

Спасибо за внимание. Я хочу написать функцию, входной - две матрицы, предположим, что первая матрица равна = numpy.asarray ([[1,0,0,0,0], [0,2,0,0,0], [ 0,0,3,0,0], [0,0,0,4,0], [0,0,0,0,5]]), и я хочу добавить диагностику этой матрицы, и я установите вторую матрицу: b = numpy.asarray ([[0], [1], [2], [3], [4]]), что означает добавление первого числа в первую строку, второе число во второй строке и так далее на ... Для этого примера ответ 15 ... Вот что я хочу сделать. – CZQ

ответ

0

есть некоторые проблемы в вашем коде. первых, определить свой тип данных тщательно, а затем Becareful при использовании [] кронштейна (посмотреть, как вы просто сделать еще один массив при вызове функции с помощью f([x,y]))

так, после того, как я изменить код стал:

import numpy 
import theano 
import theano.tensor as T 

x = T.imatrix('x') #define integer matrix 
y = T.imatrix('y') 
z = T.sum(y[T.arange(5),x[:,0]]) 

f = theano.function(inputs=[x,y],outputs=z) 

x = numpy.asarray([[1],[2],[3],[4],[0]]) 
y = numpy.ones((5,5),dtype="int32") #define integer array 
print(f(x,y)) #remove square bracket 

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

+0

Это работает! Спасибо! – CZQ

+1

ваше приветствие :) Я вижу, что вы новичок в переполнении стека. Если вы чувствуете, что мой ответ решил проблему, отметьте ее как «принятую», нажав зеленую галочку. – malioboro

Смежные вопросы