У меня есть код python, где я хочу с плавающим делением для двух элементов из матрицы. Я попробовал float() и от будущий импорт, но никто из них не работает. Вот мой код.python float division не работает
from __future__ import division
import numpy as np
def backsub(U, b):
N = np.shape(U)[0]
x = b.copy()
x[N - 1, 0] = x[N - 1, 0]/U[N-1, N-1] #This keeps giving me integer results. No matter I do float(x[N - 1, 0]) or from __future__ import division
print x[N - 1, 0]
for i in range(N - 2, -1, -1):
for j in range(i + 1, N, 1):
x[i, 0] = x[i, 0] - U[i, j] * x[j]
x[i, 0] = x[i, 0]/U[i, i]
return x
b = np.matrix('1; 2; 3')
U = np.matrix('6, 5, 1; 0, 1, 7; 0, 0, 2')
print backsub(U, b)
выход:
1
[[ 4]
[-5]
[ 1]]
Являются ли ваши матрицы фактически использующими 'dtype = float'? Если они являются «dtype = int», то вы ничего не сделаете, чтобы сделать поплавок, прежде чем назначать им. – Blckknght
Вы получаете матрицы с целым числом. Используйте float вместо ints при их создании. – user2357112
Я вижу. Спасибо! Может ли кто-нибудь отправить ваше решение в качестве ответа, чтобы я мог принять его? – ZigZagZebra