2013-09-23 14 views
3

Я получаю сообщение об ошибке, как в заголовке сообщения. Я видел это в других вопросах, но мне интересно понять, что это значит, потому что другие ответы были в определенном контексте, который не относится ко мне.Объект 'numpy.float64' не подлежит вызову

Во-вторых, я хотел бы понять, как это относится к моему коду, показанному ниже. Обратите внимание, что все работает нормально, если Zindx = 0, но не для любого другого случая.

Zindx = list(E).index(0) 
    for m in range(0,N): 
      if m != Zindx: 
       for n in range(0,N): 
        if n != Zindx: 
         if n != m: 
          x[m,m] = x[m,m] (
          - (E[n]-E[m] + E[n])*x[m,n]*x[n,Zindx] 
          /x[m,Zindx]/E[m] 
          ) 
+2

Ваша проблема заключается в том, где вы делаете 'x [m, m] = x [m, m] (...)'. Вероятно, вы захотите придерживаться '*' или какого-либо другого оператора между 'x [m, m]' и '(': иначе, Python интерпретирует это как вызывающий объект 'x [m, m]' с аргументами в скобках – Jaime

+0

Теперь я чувствую себя глупо, глупо! Thamks. – Mark

ответ

3

Это:

x[m,m] (
    - (E[n]-E[m] + E[n])*x[m,n]*x[n,Zindx] 
    /x[m,Zindx]/E[m] 
    ) 

Пытается вызвать x[m,m] как функцию с выражением в скобках в качестве аргумента. Я предполагаю, что x[m,m] возвращает float. Вы хотите умножить x[m,m] на термин в скобках? Если да, добавьте *.

+0

Да, это было очень глупо. Я читал, что круглые скобки можно использовать для уравнений, которые работают на нескольких строках, но ясно, что это может работать, только если они используются с тот же синтаксис. Я был слишком занят, глядя на все другие возможности, которых я никогда не замечал ... – Mark

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