2014-10-17 5 views
1

У меня есть функция, где я расчетливый значение как:Матричные вычисления Python

a = a + pow(b - np.dot(A[i,:],B[:,j]), 2)  
final_Result= a + C * ((np.square(A)).sum() +(np.square(B)).sum()) 
print final_Result 
func.extend(final_Result) 
# C is a float value 

Это показывает мне результат как

 [[ 455.83301538]] 
     >>> func 
     [matrix([[ 455.83301538]])] 

я могу получить final.item (0) из консоли (IPython). Но я не мог этого сделать в программе. Что я здесь делаю неправильно? Как я могу получить значение из финальной матрицы?

+1

«Но я не мог сделать это в программе». Была ли ошибка? Если да, то какой? Если нет, что случилось? – Amadan

+0

Каков фактический результат в консоли и в программе? Я могу поспорить, что это магическая работа IPython. –

+0

Это не показывает никаких ошибок. Но я не мог получить значение из матрицы –

ответ

1

По-видимому finalResult является 1x1 matrix. Если вы печатаете finalResult, вы получаете «str» или «nice» представление finalResult. Этот формат матрицы не включает текст matrix( и закрытие ); он просто показывает цифры в квадратных скобках. Если вы введете finalResult в подсказку python, он повторит «рев» finalResult; это включает текст matrix(...). Вы также можете получить этот формат, используя встроенную функцию repr().

Например (с использованием a вместо finalResult),

>>> import numpy as np 
>>> a = np.matrix([[1.25]]) 
>>> print a 
[[ 1.25]] 
>>> a 
matrix([[ 1.25]]) 
>>> print repr(a) 
matrix([[ 1.25]]) 

Вы кладете finalResult в списке func, которая в основном так же, как это:

>>> [a] 
[matrix([[ 1.25]])] 

Чтобы получить значение из в матрице вы можете использовать индексирование регулярных массивов:

>>> a[0,0] 
1.25 
Смежные вопросы