উত্তর:
True
X যদি কোনও NaN হয় (সংখ্যা নয়) এবংFalse
অন্যথায় ফিরে আসুন ।
>>> import math
>>> x = float('nan')
>>> math.isnan(x)
True
math.isnan
পছন্দ np.isnan()
?
import numpy
প্রায় 15 মেগাবাইট র্যাম import math
নেয় , যেখানে
numpy.isnan
এটি একটি সেরা পছন্দ, কারণ এটি নম্পপি অ্যারে পরিচালনা করে। আপনি যদি NumPy ব্যবহার না করে থাকেন তবে NumPy নির্ভরতা নেওয়ার এবং NumPy লোড করতে সময় ব্যয় করার কোনও সুবিধা নেই কেবলমাত্র একটি NaN চেকের জন্য (তবে আপনি যদি এনএএন চেক করে এমন ধরণের কোড লিখছেন তবে সম্ভবত আপনার ব্যবহার করা উচিত NumPy)।
কোনও এনএএন পরীক্ষা করার স্বাভাবিক উপায়টি এটি নিজের সমান কিনা তা দেখুন:
def isNaN(num):
return num != num
numpy.isnan(number)
আপনাকে বলে যদি তা NaN
না হয়।
numpy.all(numpy.isnan(data_list))
তালিকার সমস্ত উপাদান ন্যান কিনা তা নির্ধারণ করতে আপনার যদি প্রয়োজন হয় তাও দরকারী
all(map(math.isnan, [float("nan")]*5))
import pandas as pd
import numpy as np
import math
#For single variable all three libraries return single boolean
x1 = float("nan")
print(f"It's pd.isna : {pd.isna(x1)}")
print(f"It's np.isnan : {np.isnan(x1)}")
print(f"It's math.isnan : {math.isnan(x1)}")
আউটপুট
It's pd.isna : True
It's np.isnan : True
It's math.isnan : True
ps.isna()
আমার সমস্যাগুলি সমাধান করে ধন্যবাদ!
এখানে একটি উত্তর সাথে কাজ করছে:
float('nan')
, numpy.nan
...মান অনুসারে একটি এনএএন বাস্তবায়িত হয়, এটিই একমাত্র মূল্য যার জন্য নিজের সাথে অসমতার তুলনা সত্য হওয়া উচিত:
def is_nan(x):
return (x != x)
এবং কিছু উদাহরণ:
import numpy as np
values = [float('nan'), np.nan, 55, "string", lambda x : x]
for value in values:
print(f"{repr(value):<8} : {is_nan(value)}")
আউটপুট:
nan : True
nan : True
55 : False
'string' : False
<function <lambda> at 0x000000000927BF28> : False
numpy.nan
একটি নিয়মিত পাইথন float
বস্তুর ধরনের মাত্র মত ফিরে float('nan')
। আপনি NumPy এর মুখোমুখি বেশিরভাগ NaN numpy.nan
অবজেক্ট হবেন না ।
numpy.nan
সি এর অন্তর্নিহিত লাইব্রেরিতে নিজের এনএএন মানটি সংজ্ঞায়িত করে । এটি পাইথনের এনএএন মোড়কে দেয় না। তবে এখন, তারা দুজনেই আইইইই 754 স্ট্যান্ডার্ডের সাথে সম্মতি দেয় কারণ তারা সি 99 এপিআইয়ের উপর নির্ভর করে।
float('nan') is float('nan')
(অদ্বিতীয়) এবং np.nan is np.nan
(অনন্য)
np.nan
একটি নির্দিষ্ট বস্তু, যখন প্রতিটি float('nan')
কল একটি নতুন অবজেক্ট তৈরি করে। আপনি যদি তা করেন nan = float('nan')
তবে nan is nan
আপনিও পেয়ে যাবেন । আপনি যদি এমন কোনও কিছু দিয়ে একটি আসল নুমপি এনএএন তৈরি করেন np.float64('nan')
তবে আপনিও পেয়ে যাবেনnp.float64('nan') is not np.float64('nan')
।
আমি আসলে এটির মধ্যে দৌড়েছি, তবে আমার জন্য এটি ন্যান, -আইএনএফ বা ইনফের জন্য অনুসন্ধান করা হয়েছিল। আমি সবেমাত্র ব্যবহার করেছি
if float('-inf') < float(num) < float('inf'):
এটি সংখ্যার ক্ষেত্রে সত্য, নান এবং উভয়ই ইনফের জন্য মিথ্যা, এবং স্ট্রিং বা অন্যান্য ধরণের (যা সম্ভবত একটি ভাল জিনিস) এর মতো জিনিসের ব্যতিক্রম বাড়িয়ে তুলবে। এছাড়াও এর জন্য ম্যাথ বা নিম্পির মতো কোনও লাইব্রেরি আমদানির প্রয়োজন হয় না (নিম্পি এতটাই জঘন্য যে এটি কোনও সংকলিত অ্যাপ্লিকেশনটির আকার দ্বিগুণ করে)।
math.isfinite
পাইথন ৩.২ অবধি প্রবর্তন করা হয়নি, সুতরাং @ ডেভ দ্য সায়েন্টিস্টের উত্তরটি ২০১২-এ পোস্ট করা হয়েছিল এটি হুবহু "পুনরুদ্ধার [আইং] করা হয়নি" - সমাধানটি আজও পাইথন ২ এর সাথে যারা কাজ করছেন তাদের পক্ষে সমাধান রয়েছে
অথবা সংখ্যাটি নিজের সাথে তুলনা করুন। NaN সবসময় হয়! = নান অন্যথায় (যেমন যদি এটা হয় একটি সংখ্যা) তুলনা সফল করা উচিত নয়।
ঠিক আছে আমি এই পোস্টে প্রবেশ করলাম, কারণ আমি ফাংশন নিয়ে কিছু সমস্যা ছিল:
math.isnan()
আপনি এই কোডটি চালানোর সময় সমস্যা রয়েছে:
a = "hello"
math.isnan(a)
এটি ব্যতিক্রম উত্থাপন। এর জন্য আমার সমাধানটি অন্য চেক করা:
def is_nan(x):
return isinstance(x, float) and math.isnan(x)
def is_nan(x): try: return math.isnan(x) except: return False
পাইথনের সাথে <2.6 আমি শেষ করেছি
def isNaN(x):
return str(float(x)).lower() == 'nan'
এটি আমার পক্ষে সোলারিস ৫.৯ বাক্সে অজগর ২.২.১ এবং উবুন্টু 10-তে পাইথন ২.6.৫ সহ কাজ করে
-1.#IND
আমি একটি ওয়েব-পরিষেবা থেকে ডেটা গ্রহণ করছি যা NaN
স্ট্রিং হিসাবে প্রেরণ করে 'Nan'
। তবে আমার ডেটাতে অন্য ধরণের স্ট্রিংও থাকতে পারে, তাই সাধারণ float(value)
কোনও ব্যতিক্রম ছুঁড়ে ফেলতে পারে। আমি গৃহীত উত্তরের নিম্নলিখিত রূপটি ব্যবহার করেছি:
def isnan(value):
try:
import math
return math.isnan(float(value))
except:
return False
প্রয়োজনীয়তা:
isnan('hello') == False
isnan('NaN') == True
isnan(100) == False
isnan(float('nan')) = True
try: int(value)
value
থাকার NaN
বা না থাকার বিষয়ে কী বলে ?
NaN
Is (পাইথন মত কি আপনি থেকে পেতে পারে float('inf') * 0
), এবং এইভাবে যদিও STRING 'হ্যালো' একটি সংখ্যা নয়, কিন্তু এটি নয় NaN
কারণ NaN
এখনও একটি সাংখ্যিক মান হয়!
int(value)
সব ব্যতিক্রম জন্য চেক করার প্রয়োজন নেই , False
লেখা হবে।
চলকটি NaN বা কোনও নয় কিনা তা জানাতে সমস্ত পদ্ধতি:
কোন প্রকার
In [1]: from numpy import math
In [2]: a = None
In [3]: not a
Out[3]: True
In [4]: len(a or ()) == 0
Out[4]: True
In [5]: a == None
Out[5]: True
In [6]: a is None
Out[6]: True
In [7]: a != a
Out[7]: False
In [9]: math.isnan(a)
Traceback (most recent call last):
File "<ipython-input-9-6d4d8c26d370>", line 1, in <module>
math.isnan(a)
TypeError: a float is required
In [10]: len(a) == 0
Traceback (most recent call last):
File "<ipython-input-10-65b72372873e>", line 1, in <module>
len(a) == 0
TypeError: object of type 'NoneType' has no len()
ন্যান টাইপ
In [11]: b = float('nan')
In [12]: b
Out[12]: nan
In [13]: not b
Out[13]: False
In [14]: b != b
Out[14]: True
In [15]: math.isnan(b)
Out[15]: True
যদি আপনার পুনরাবৃত্তিতে মিশ্রিত প্রকারের থাকে তবে এখানে এমন একটি সমাধান দেওয়া হয়েছে যা নকল ব্যবহার করে না:
from math import isnan
Z = ['a','b', float('NaN'), 'd', float('1.1024')]
[x for x in Z if not (
type(x) == float # let's drop all float values…
and isnan(x) # … but only if they are nan
)]
['এ', 'বি', 'ডি', ১.১০২৪]
শর্ট সার্কিট মূল্যায়ন মানে ডান হাতের মূল্যায়ন না করে দ্রুত মূল্যায়ন করার সাথে সাথে isnan
'ভাসা' টাইপের নয় এমন মানগুলিতে ডাকা হবে না ।False and (…)
False
পাইথন ৩.6-তে স্ট্রিং মান x ম্যাথ.আইসানান (এক্স) এবং এনপি.আইসানান (এক্স) পরীক্ষা করে ত্রুটি উত্থাপন করা হয়। সুতরাং আমি চেক করতে পারছি না যে প্রদত্ত মানটি NaN আছে কিনা তা যদি আমি জানি না এটি আগে একটি সংখ্যা। নিম্নলিখিতটি এই সমস্যাটিকে সমাধান করে বলে মনে হচ্ছে
if str(x)=='nan' and type(x)!='str':
print ('NaN')
else:
print ('non NaN')
পান্ডায় স্ট্রিংয়ের জন্য পিডি নিন।স্নুল:
if not pd.isnull(atext):
for word in nltk.word_tokenize(atext):
NLTK এর জন্য বৈশিষ্ট্য নিষ্কাশন হিসাবে ফাংশন
def act_features(atext):
features = {}
if not pd.isnull(atext):
for word in nltk.word_tokenize(atext):
if word not in default_stopwords:
features['cont({})'.format(word.lower())]=True
return features