gpt4 book ai didi

python - 如何检查包含 NaN 的列表

转载 作者:太空狗 更新时间:2023-10-29 18:18:44 26 4
gpt4 key购买 nike

在我的 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

它不应该返回 true 吗?

enter image description here

我加载的库:

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

最佳答案

我认为这是有道理的,因为您通过 star 导入间接地将 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])

您可以通过标识测试 this 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

关于python - 如何检查包含 NaN 的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20319813/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com