আমাকে একটি ফাংশন লিখতে হবে যা ইনপুটটিতে কমপক্ষে একটি মান রয়েছে যা অ-সংখ্যাযুক্ত তা সনাক্ত করতে পারে। যদি একটি অ-সংখ্যাসূচক মান পাওয়া যায় তবে আমি একটি ত্রুটি বাড়িয়ে তুলব (কারণ গণনাটিতে কেবল একটি সংখ্যার মান ফেরানো উচিত)। ইনপুট অ্যারের মাত্রার সংখ্যা আগে থেকে জানা যায় না - ফাংশনটি এনডিআইএম নির্বিশেষে সঠিক মান দিতে হবে। অতিরিক্ত জটিলতা হিসাবে ইনপুটটি একটি একক ভাসা বা numpy.float64
শূন্য-মাত্রিক অ্যারের মতো কিছু বাছাইয়ের মতো হতে পারে ।
এটি সমাধানের সুস্পষ্ট উপায় হ'ল একটি পুনরাবৃত্ত ফাংশন লিখুন যা অ্যারেতে প্রতিটি পুনরাবৃত্তিযোগ্য অবজেক্টের উপরে পুনরাবৃত্তি করে যতক্ষণ না এটি একটি নন-আইট্রেবের সন্ধান করে। এটি numpy.isnan()
প্রতিটি অ-পুনরাবৃত্তিযোগ্য বস্তুর উপরে ফাংশনটি প্রয়োগ করবে । যদি কমপক্ষে একটি অ-সংখ্যাসূচক মানটি পাওয়া যায় তবে ফাংশনটি তত্ক্ষণাত ফলসকে ফিরিয়ে দেবে। অন্যথায় যদি পুনরাবৃত্তীয় সমস্ত মান সংখ্যাসূচক হয় তবে শেষ পর্যন্ত এটি সত্য হয়ে যাবে।
এটি ঠিক কাজ করে, তবে এটি বেশ ধীর এবং আমি প্রত্যাশা করি যে এটি করার জন্য নম্পপি আরও অনেক ভাল উপায় আছে। দ্রুত এবং আরও অসম্পূর্ণ একটি বিকল্প কি?
এখানে আমার উপহাস:
def contains_nan( myarray ):
"""
@param myarray : An n-dimensional array or a single float
@type myarray : numpy.ndarray, numpy.array, float
@returns: bool
Returns true if myarray is numeric or only contains numeric values.
Returns false if at least one non-numeric value exists
Not-A-Number is given by the numpy.isnan() function.
"""
return True
contains_nan
সন্দেহজনক দেখাচ্ছে বলে মনে হচ্ছে: "কমপক্ষে একটি অ-সংখ্যাযুক্ত মান উপস্থিত থাকলে মিথ্যা ফিরিয়ে দেয়"। অ্যারেটিতে NaN থাকলে আমিcontains_nan
ফিরে আসব বলে প্রত্যাশা করতামTrue
।