In my for loop, my code generates a list like this one:
list([0.0,0.0]/sum([0.0,0.0]))
The loop generates all sort of other number vectors but it also generates [nan,nan]
, and to avoid it I tried to put in a conditional to prevent it like the one below, but it doesn't return true.
nan in list([0.0,0.0]/sum([0.0,0.0]))
>>> False
Shouldn't it return true?
Libraries I've loaded:
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
Best Answer
I think this makes sense because of your pulling
numpy
into scope indirectly via the star import.When you did
it pulled in
numpy.sum
:You can test that this
nan
object (nan
isn't unique in general) is in a list via identity, but if you try it in anarray
it seems to test via equality, andnan != nan
:You could use
np.isnan
: