NumPy, умножающее int на float, похоже, не работает

Я работаю над проблемой Google Doomsday Fuel в Python 2.7 (это нужно сделать в Python 2.7, следовательно, from __future__ import division ), которая использует NumPy, что, по общему признанию, я не слишком хорошо знаком.

Код WIP (с большим количеством комментариев добавлен для вашего удобства):

 from __future__ import division from fractions import Fraction import numpy as np from numpy import linalg as LA def gcd(m,n): ''' function for finding the greatest common divisor of m and n used mostly for the LCM function ''' if m < n: return gcd(n,m) return gcd(n,m%n) def lcm(m,n): ''' function for finding the least common multiple of m and n using the fact that m*n = gcd(m,n)*lcm(m,n) ''' return (m*n)/(gcd(m,n)) def answer(m): ''' m is an square matrix of nonnegative integers dimensions guaranteed to be at most 10x10 ''' tbd = [] #stands for To Be Deleted l = len(m) for i in range(l): ''' Checks each row If row i is empty, add i to tbd, then make m[i][i] = 1 Otherwise, divide row i by the sum of row i to "normalize" it eg [[3,2],[0,0]] would become [[0.6,0.4],[0,1]] ''' s = sum(m[i]) if s == 0: tbd.append(i) m[i][i] = 1 else: for j in range(l): m[i][j] /= s tbd.sort(reverse=True) a = np.array(m) r = np.diag([1 for x in range(l)]) #set initial matrix r which is just the identity matrix with same dimensions as a for i in range(100): r *= a #with each row adding up to just 1, r should stay stable initial = [0 for x in range(l)] initial[0] = 1 final = initial * r for i in tbd: del final[i] dens = [] #denominators for i in range(len(final)): final[i] = final[i].limit_denominator() dens.append(final[i].denominator) #collect all denominators lc = dens[0] for j in range(1,len(dens)): lc = lcm(lc,dens[j]) #find LCM of all the denominators for i in range(len(final)): final[i] = int(final[i] * lc) #multiply the final array (which uses Fractions) by the LCM, then convert elements to int final.append(lc) return final def main(): print answer([[1,2],[2,1]]) print answer([[0,1,0,0,0,1],[4,0,0,3,2,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0]]) main() 

Код в Ideone: http://ideone.com/DO1otS

Сообщение об ошибке:

 Traceback (most recent call last): File "prog.py", line 51, in <module> File "prog.py", line 48, in main File "prog.py", line 29, in answer TypeError: Cannot cast ufunc multiply output from dtype('float64') to dtype('int64') with casting rule 'same_kind' 

Почему программа не может умножить int и float вместе? Или есть еще одна часть этого сообщения об ошибке, которую я пропущу?

 
Interesting Posts for Van-Lav

Найдите слово (из списка слов) в строке (из списка строк) и добавьте значения в новый список. питон

В чем разница между hasattr () и 'attribute' в dir ()?

Фильтрация и выбор из сводных таблиц с использованием python pandas

Python: проблемы с получением страницы входа на сайт .aspx

Применение Matlotlib Crashing tkinter

как получить доступ к python из командной строки, используя py вместо python

ipython: как установить ширину терминала

Торнадо: могу ли я запустить код после вызова self.finish () в асинхронном RequestHandler?

Построение словаря с несколькими значениями на ключ

Странное поведение в python с dict лямбда-функциями

Python: проверьте, потеряно ли соединение IRC (PING PONG?)

CondingBat Python головоломка приводит к "Timed out"

Веб-скребок для динамических форм в python

Кластеризация ~ 100 000 коротких строк в Python

Как обрабатывать изображения в режиме реального времени и выводить видео в реальном времени результата?

Python - лучший язык программирования в мире.