NaN파이썬에서 배열의 요소를 설정할 수 있습니까?
또한 변수를 +/- 무한대로 설정할 수 있습니까? 그렇다면 숫자가 무한대인지 여부를 확인하는 기능이 있습니까?
답변
다음을 사용하여 문자열에서 캐스트 float():
>>> float('NaN')
nan
>>> float('Inf')
inf
>>> -float('Inf')
-inf
>>> float('Inf') == float('Inf')
True
>>> float('Inf') == 1
False
답변
그렇습니다 numpy.
import numpy as np
a = arange(3,dtype=float)
a[0] = np.nan
a[1] = np.inf
a[2] = -np.inf
a # is now [nan,inf,-inf]
np.isnan(a[0]) # True
np.isinf(a[1]) # True
np.isinf(a[2]) # True
답변
숫자를 NaN 또는 무한대로 설정할 수 있습니까?
예, 실제로 몇 가지 방법이 있습니다. 가져 오기가없는 몇 가지 작업 import이 있지만 다른 사람들은 필요 하지만이 답변을 위해 개요의 라이브러리를 표준 라이브러리 및 NumPy (표준 라이브러리는 아니지만 매우 일반적인 타사 라이브러리)로 제한합니다.
다음 표는 숫자가 아니거나 양수 또는 음수 무한대를 만드는 방법을 요약 한 것입니다 float.
╒══════════╤══════════════╤════════════════════╤════════════════════╕
│   result │ NaN          │ Infinity           │ -Infinity          │
│ module   │              │                    │                    │
╞══════════╪══════════════╪════════════════════╪════════════════════╡
│ built-in │ float("nan") │ float("inf")       │ -float("inf")      │
│          │              │ float("infinity")  │ -float("infinity") │
│          │              │ float("+inf")      │ float("-inf")      │
│          │              │ float("+infinity") │ float("-infinity") │
├──────────┼──────────────┼────────────────────┼────────────────────┤
│ math     │ math.nan     │ math.inf           │ -math.inf          │
├──────────┼──────────────┼────────────────────┼────────────────────┤
│ cmath    │ cmath.nan    │ cmath.inf          │ -cmath.inf         │
├──────────┼──────────────┼────────────────────┼────────────────────┤
│ numpy    │ numpy.nan    │ numpy.PINF         │ numpy.NINF         │
│          │ numpy.NaN    │ numpy.inf          │ -numpy.inf         │
│          │ numpy.NAN    │ numpy.infty        │ -numpy.infty       │
│          │              │ numpy.Inf          │ -numpy.Inf         │
│          │              │ numpy.Infinity     │ -numpy.Infinity    │
╘══════════╧══════════════╧════════════════════╧════════════════════╛
테이블에 몇 가지 언급이 있습니다.
float당신은 또한 사용할 수 있도록 생성자는 실제로 대소 문자를 구분float("NaN")나float("InFiNiTy").cmath및numpy상수는 일반 파이썬 반환float객체.- 는 
numpy.NINF실제로 필요하지 않습니다 필자가 아는 유일한 상수이다-. - 
복잡한 NaN이와 무한대를 만들 수 있습니다
complex및cmath:╒══════════╤════════════════╤═════════════════╤═════════════════════╤══════════════════════╕ │ result │ NaN+0j │ 0+NaNj │ Inf+0j │ 0+Infj │ │ module │ │ │ │ │ ╞══════════╪════════════════╪═════════════════╪═════════════════════╪══════════════════════╡ │ built-in │ complex("nan") │ complex("nanj") │ complex("inf") │ complex("infj") │ │ │ │ │ complex("infinity") │ complex("infinityj") │ ├──────────┼────────────────┼─────────────────┼─────────────────────┼──────────────────────┤ │ cmath │ cmath.nan ¹ │ cmath.nanj │ cmath.inf ¹ │ cmath.infj │ ╘══════════╧════════════════╧═════════════════╧═════════════════════╧══════════════════════╛¹ 옵션은 a가
float아닌 일반을 반환 합니다complex. 
숫자가 무한대인지 여부를 확인하는 기능이 있습니까?
그렇습니다. 실제로 NaN, Infinity 및 Nan 또는 Inf에는 몇 가지 기능이 있습니다. 그러나 이러한 사전 정의 된 기능은 내장되어 있지 않으며 항상 다음이 필요합니다 import.
╒══════════╤═════════════╤════════════════╤════════════════════╕
│      for │ NaN         │ Infinity or    │ not NaN and        │
│          │             │ -Infinity      │ not Infinity and   │
│ module   │             │                │ not -Infinity      │
╞══════════╪═════════════╪════════════════╪════════════════════╡
│ math     │ math.isnan  │ math.isinf     │ math.isfinite      │
├──────────┼─────────────┼────────────────┼────────────────────┤
│ cmath    │ cmath.isnan │ cmath.isinf    │ cmath.isfinite     │
├──────────┼─────────────┼────────────────┼────────────────────┤
│ numpy    │ numpy.isnan │ numpy.isinf    │ numpy.isfinite     │
╘══════════╧═════════════╧════════════════╧════════════════════╛
다시 몇 가지 말 :
cmath와numpy함수는 하나 실제 또는 가상의 일부가 NaN 또는 무한대의 경우 그들은 확인합니다, 복잡한 개체를 작동합니다.- 이 
numpy함수는numpy배열 및 목록, 튜플 등으로 변환 할 수있는 모든 항목 에서도 작동합니다 . - NumPy : 
numpy.isposinf및 에서 음의 무한대를 명시 적으로 검사하는 함수도 있습니다numpy.isneginf. - Pandas는 확인할 두 가지 추가 기능을 제공합니다 
NaN.pandas.isna및pandas.isnull(NaN뿐만 아니라None및NaT) - 
내장 함수가 없더라도 직접 작성하는 것이 쉬울 것입니다 (여기에서 형식 검사 및 문서를 무시했습니다).
def isnan(value): return value != value # NaN is not equal to anything, not even itself infinity = float("infinity") def isinf(value): return abs(value) == infinity def isfinite(value): return not (isnan(value) or isinf(value)) 
이러한 함수에 대한 예상 결과를 요약하려면 (입력이 부동이라고 가정) :
╒════════════════╤═══════╤════════════╤═════════════╤══════════════════╕
│          input │ NaN   │ Infinity   │ -Infinity   │ something else   │
│ function       │       │            │             │                  │
╞════════════════╪═══════╪════════════╪═════════════╪══════════════════╡
│ isnan          │ True  │ False      │ False       │ False            │
├────────────────┼───────┼────────────┼─────────────┼──────────────────┤
│ isinf          │ False │ True       │ True        │ False            │
├────────────────┼───────┼────────────┼─────────────┼──────────────────┤
│ isfinite       │ False │ False      │ False       │ True             │
╘════════════════╧═══════╧════════════╧═════════════╧══════════════════╛
파이썬에서 배열의 요소를 NaN으로 설정할 수 있습니까?
목록에서 문제가되지 않으므로 언제든지 NaN (또는 무한대)을 포함 할 수 있습니다.
>>> [math.nan, math.inf, -math.inf, 1]  # python list
[nan, inf, -inf, 1]
당신이에 포함하려는 그러나 경우 array(예 : array.array또는 numpy.array) 다음 배열의 형태가 되어야 할 float또는 complex그렇지 있기 때문에 배열의 유형으로 다운 캐스트하려고합니다!
>>> import numpy as np
>>> float_numpy_array = np.array([0., 0., 0.], dtype=float)
>>> float_numpy_array[0] = float("nan")
>>> float_numpy_array
array([nan,  0.,  0.])
>>> import array
>>> float_array = array.array('d', [0, 0, 0])
>>> float_array[0] = float("nan")
>>> float_array
array('d', [nan, 0.0, 0.0])
>>> integer_numpy_array = np.array([0, 0, 0], dtype=int)
>>> integer_numpy_array[0] = float("nan")
ValueError: cannot convert float NaN to integer
답변
Python 2.4를 사용할 때 시도하십시오
inf = float("9e999")
nan = inf - inf
Python 2.4를 실행하는 임베디드 장치로 simplejson을 이식 할 때 문제가 발생 float("9e999")했습니다. 를 사용하지 마십시오 inf = 9e999. 문자열에서 변환해야합니다.
-inf을 제공합니다 -Infinity.
답변
