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

Как сделать rdpy-rdpmitm, чтобы клиент повторно вводил имя пользователя и пароль, когда пароль не является неправильным

Как удалить пробелы во время записи в INI-файле – Python

Модули Jython и python

Вход на главную страницу Allauth не работает

Как запустить все тестовые тесты Python в каталоге?

В чем разница между аргументом буферизации open () и жестко запрограммированным размером буфера для чтения, используемым при итерации через файл?

Как изменить размер общей памяти в Python

не может найти статические изображения в среде django dev

Основы классов нового стиля Python – `object` и` type`

Отступ Python в Spacemacs с жесткими вкладками отключен

Какие проблемы с масштабируемостью связаны с NetworkX?

Развертывание первого приложения (GAE)

Падение строк в базе данных pandas на основе значений столбцов

Поиск исключения в многопроцессорности python

Panda DataFrame.groupby () поведение wierd с массивом numpy

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