Как проверить список, содержащий NaN

В моем цикле for мой код генерирует такой список:

list([0.0,0.0]/sum([0.0,0.0])) 

Петля генерирует всевозможные другие векторы числа, но также генерирует [nan,nan] , и, чтобы избежать этого, я попытался установить условное условие, чтобы предотвратить его, как показано ниже, но оно не возвращает true.

 nan in list([0.0,0.0]/sum([0.0,0.0])) >>> False 

Разве это не должно возвращаться?

введите описание изображения здесь

Библиотеки, которые я загрузил:

 import PerformanceAnalytics as perf import DataAnalyticsHelpers import DataHelpers as data import OptimizationHelpers as optim from matplotlib.pylab import * from pandas.io.data import DataReader from datetime import datetime,date,time import tradingWithPython as twp import tradingWithPython.lib.yahooFinance as data_downloader # used to get data from yahoo finance import pandas as pd # as always. import numpy as np import zipline as zp from scipy.optimize import minimize from itertools import product, combinations import time from math import isnan 

2 Solutions collect form web for “Как проверить список, содержащий NaN”

Я думаю, что это имеет смысл из-за того, что вы numpy косвенной косвенности посредством импорта звезды.

 >>> import numpy as np >>> [0.0,0.0]/0 Traceback (most recent call last): File "<ipython-input-3-aae9e30b3430>", line 1, in <module> [0.0,0.0]/0 TypeError: unsupported operand type(s) for /: 'list' and 'int' >>> [0.0,0.0]/np.float64(0) array([ nan, nan]) 

Когда вы это сделали

 from matplotlib.pylab import * 

он потянул numpy.sum :

 >>> from matplotlib.pylab import * >>> sum is np.sum True >>> [0.0,0.0]/sum([0.0, 0.0]) array([ nan, nan]) 

Вы можете проверить, что этот nan объект ( nan не является уникальным вообще) находится в списке через идентификатор, но если вы попробуете его в array он, кажется, проверяет через равенство, а nan != nan :

 >>> nan == nan False >>> nan == nan, nan is nan (False, True) >>> nan in [nan] True >>> nan in np.array([nan]) False 

Вы можете использовать np.isnan :

 >>> np.isnan([nan, nan]) array([ True, True], dtype=bool) >>> np.isnan([nan, nan]).any() True 

Вы должны использовать math модуль.

 >>> import math >>> math.isnan(item) 
  • Преобразование строки в целое с помощью map ()
  • Как напечатать жирный текст в Python?
  • соединить список списков надлежащим образом
  • Заменить метод __str__ на объект списка в Python
  • Pycharm и unittest не работают
  • Как получить значение StringProperty в Python для Google App Engine?
  • Гарантия закрытия файла
  • Получить размеры видеофайла
  • Python - лучший язык программирования в мире.