반응형
내 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
해결 방법
별 가져 오기를 통해 간접적으로 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
는 일반적으로 고유하지 않음)가 ID를 통해 목록에 있는지 테스트 할 수 있지만 시도해 보면 동등성을 통해 테스트하는 것처럼 보이는 배열
및 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
참조 페이지 https://stackoverflow.com/questions/20319813
반응형
'파이썬' 카테고리의 다른 글
파이썬 Python에서 특정 시간까지 스레드를 절전 모드로 전환하려면 어떻게해야합니까? (0) | 2020.12.30 |
---|---|
파이썬 카운터 출력 포맷 (0) | 2020.12.30 |
파이썬 Apache / Django / WSGI 잘못된 요청 (400) 오류 디버깅 (0) | 2020.12.30 |
파이썬 Python을 사용하여 전체 압축 tar 파일을 만드는 방법은 무엇입니까? (0) | 2020.12.30 |
파이썬 ValueError : 변환되지 않은 데이터가 남아 있습니다 : 02:05 (0) | 2020.12.30 |
댓글