NaN
পাইথনে কোন অ্যারের উপাদান সেট করা সম্ভব ?
অতিরিক্তভাবে, + /- অনন্তে কোনও ভেরিয়েবল সেট করা সম্ভব? যদি তাই হয়, কোনও সংখ্যা অনন্ত কিনা তা যাচাই করার জন্য কোনও ফাংশন আছে কি না?
isinf
এবং isnan
যেমন দ্বারা উপলব্ধ numpy
। আমার উত্তর নীচে দেখুন।
NaN
পাইথনে কোন অ্যারের উপাদান সেট করা সম্ভব ?
অতিরিক্তভাবে, + /- অনন্তে কোনও ভেরিয়েবল সেট করা সম্ভব? যদি তাই হয়, কোনও সংখ্যা অনন্ত কিনা তা যাচাই করার জন্য কোনও ফাংশন আছে কি না?
isinf
এবং isnan
যেমন দ্বারা উপলব্ধ numpy
। আমার উত্তর নীচে দেখুন।
উত্তর:
স্ট্রিং থেকে কাস্ট করুন 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
math.isnan()
এবংmath.isinf()
numpy
আপনি যা চান তা সবই যদি হয় NaN
বাinf
NaN
বা Inf
, from numpy import nan, inf
এই প্রশ্নটি উত্থাপিত হওয়ার পর থেকে যেটি বিদ্যমান থাকতে পারে ।
নাএন বা অনন্তকে কোনও নম্বর সেট করা সম্ভব?
হ্যাঁ, আসলে বেশ কয়েকটি উপায় রয়েছে। কোনও আমদানি ছাড়াই কয়েকটি কাজ, অন্যদের প্রয়োজন হয়import
তবে এই উত্তরের জন্য আমি ওভারভিউয়ের লাইব্রেরিগুলিকে স্ট্যান্ডার্ড-লাইব্রেরি এবং নুমপি (যা স্ট্যান্ডার্ড-লাইব্রেরি নয় তবে খুব সাধারণ তৃতীয় পক্ষের লাইব্রেরি) সীমাবদ্ধ করব।
নিম্নলিখিত টেবিলটি কীভাবে একটি সংখ্যা-বা একটি ধনাত্মক বা নেতিবাচক অনন্ত তৈরি করতে পারে সেগুলির সংক্ষিপ্তসার জানিয়েছে 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 │
╘══════════╧════════════════╧═════════════════╧═════════════════════╧══════════════════════╛
Not সহ বিকল্পগুলি একটি সমভূমি ফেরত দেয়, একটি float
নয় complex
।
একটি সংখ্যা অনন্ত কিনা তা যাচাই করার জন্য কোনও ফাংশন আছে কি না?
হ্যাঁ আছে - বাস্তবে নাএন, ইনফিনিটি এবং ন্যান বা ইনফের জন্য বেশ কয়েকটি ফাংশন রয়েছে। তবে এই পূর্বনির্ধারিত ফাংশনগুলি অন্তর্নির্মিত নয়, তাদের সর্বদা একটি প্রয়োজন 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
অ্যারে এবং সবকিছু যে (তালিকা, tuple, ইত্যাদি) এক পরিবর্তিত করা যায়numpy.isposinf
এবং এর মধ্যে ইতিবাচক এবং নেতিবাচক অনন্ততার জন্য স্পষ্টভাবে পরীক্ষা করে numpy.isneginf
।NaN
: pandas.isna
এবং pandas.isnull
(তবে কেবল নাএনএন নয়, এটিও মেলে 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
math.isnan
জটিল সংখ্যা নিয়ে কাজ করে না। math.isnan(x.real) or math.isnan(x.imag)
পরিবর্তে ব্যবহার করুন।
পাইথন ২.৪ ব্যবহার করার সময় চেষ্টা করুন
inf = float("9e999")
nan = inf - inf
আমি যখন ইমেজড ডিভাইসে সিম্পজসনকে পোর্টিং করছিলাম তখন আমি সমস্যার মুখোমুখি হচ্ছি যা পাইথন ২.৪ চালাচ্ছে, float("9e999")
এটি ঠিক করেছে। ব্যবহার করবেন না inf = 9e999
, আপনার স্ট্রিং থেকে রূপান্তর করতে হবে।
-inf
দেয় -Infinity
।