2016-02-25 3 views
1

У меня есть следующий код, который помогает мне изменить каждую строку в файле и выполнить простой расчет. При делении на ноль произошла ошибка. Любые помощь приветствуются.Python: как включить деление на ноль и вернуть нулевое значение?

print(np.sum(single/divisi * binary, axis = -1)) 
RuntimeWarning: divide by zero encountered in divide 

print(np.sum(single/divisi * binary, axis = -1)) 
RuntimeWarning: invalid value encountered in multiply 

Код

import numpy as np 
from numpy import genfromtxt 
import csv 

binary = np.genfromtxt('binary.csv', delimiter = ',').reshape((-1, 101, 4)) 
single = np.genfromtxt('single.csv', delimiter = ',').reshape((-1, 4)) 
divisi = np.genfromtxt('divisi.csv', delimiter = ',').reshape((-1, 1, 4)) 

print(np.sum(single/divisi * binary, axis = -1)) 

Включение этого 4 строки или код еще не может решить.

try: 
    print(np.sum(single/divisi * binary, axis = -1)) 
except Exception: 
    print(0) 
+2

Возможный дубликат [NumPy: Возвращает 0, с делением на ноль] (HTTP://stackoverflow.com/questions/26248654/numpy-return-0-with-divide-by-zero) – idjaw

ответ

1

Просто поместите ваш print в try:except, как это:

import numpy as np 
from numpy import genfromtxt 
import csv 

binary = np.genfromtxt('binary.csv', delimiter = ',').reshape((-1, 101, 4)) 
single = np.genfromtxt('single.csv', delimiter = ',').reshape((-1, 4)) 
divisi = np.genfromtxt('divisi.csv', delimiter = ',').reshape((-1, 1, 4)) 

try: 
    print(np.sum(single/divisi * binary, axis = -1)) 
except Exception: 
    print(0) #or print whatever you want when you divide by zero 
+0

Я пробовал это, но не смог. Спасибо – Xiong89

+0

Какая ошибка у вас возникла? – MarkyPython

+0

по-прежнему те же ошибки, что упоминалось выше. – Xiong89

1

Как об этом:

if (divisi == 0): 
    print (0) 
else: 
    print(np.sum(single/divisi * binary, axis = -1)) 
1

Я рекомендую вам прочитать эту страницу. https://docs.python.org/2/tutorial/errors.html

Насколько я знаю, когда деление на ноль ошибок происходит, рекомендуется использовать код, как показано ниже

try: 
    print(np.sum(single/divisi * binary, axis = -1)) 
except ZeroDivisionError as e: 
    print(0)