• 0

إنشاء مصفوفة Numpy مليئة بـقيم nan بدلًا من الأصفار

لدي الكود التالي:

r = numpy.zeros(shape = (width, height, 2))	// Width و height قيم عددية

يقوم السطر السابق بتوليد مصفوفة حجمها width * height* 2، بدلاً من ذلك، أود معرفة ما إذا كانت هناك دالة أو طريقة لتهيئتها باستخدام NaN بدلًا من الأصفار، لتكون النتيجة كالتالي على سبيل المثال:

# في حالة كان 
# width = 2
# height = 2

array([[[nan, nan],
        [nan, nan]],

       [[nan, nan],
        [nan, nan]]])

 

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 2

يمكننا استخدام الدالة empty لإنشاء مصفوفة ثم القيام بتعبئتها بالقيمة المطلوبة من خلال التابع fill كما يلي:

def fill(n):
    arr = np.empty(n) 
    return arr.fill(np.nan)
fill(5)   
# array([nan, nan, nan, nan, nan])
def fill(n):
    arr = np.empty(n) 
    arr.fill(np.nan)
    return arr
print(fill((3,2)))
"""
[[nan nan]
 [nan nan]
 [nan nan]]
"""

أو يمكنك أن تقوم يتعبئتها بشكل يدوي:

def c(n):
    a = np.empty(n)
    a[:] = np.nan
    return a
print(c((3,2)))
"""
[[nan nan]
 [nan nan]
 [nan nan]]
"""

وكطريقة سهلة يمكنك استخدام التابع full بحيث نمرر له أبعاد المصفوفة والقيمة المراد تعبئتها:

def full(n):
    return numpy.full(n, np.nan)
print(c((3,2)))
"""
[[nan nan]
 [nan nan]
 [nan nan]]
"""

أو من خلال التابع التالي حيث سنعتمد على مفهوم القوائم ثم تحويلها لمصفوفة نمباي:

def list(n,row,col):
    return np.array(n * [np.nan]).reshape(-1,col)
print(list(12,3,4))
"""
[[nan nan nan nan]
 [nan nan nan nan]
 [nan nan nan nan]]
"""

لكن هنا نمرر عدد عناصر المصفوفة المطلوبة وعدد أسطر وأعمدة المصفوفة المطلوبة. ويمكنك أيضاً تنفيذ ماتريده بالشكل التالي:

np.nan * np.zeros(shape=(3,2))
"""
array([[nan, nan],
       [nan, nan],
       [nan, nan]])
"""

كما ويمكنك من خلال الدالةtile حيث نمرر لها القيمة ثم الأبعاد كما في المثال التالي :

np.tile(np.nan, (2, 3))
"""
array([[nan, nan, nan],
       [nan, nan, nan]])
"""

وبشكل عام فإن أسرع طريقة هي استخدام الدالة fill.

تمّ تعديل بواسطة Ali Haidar Ahmad
2 اشخاص أعجبوا بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

من إصدار  +NumPy 1.8 يمكن استعمال الدلة numpy.full ونملأ المصفوفة بالقيم التي تريدها مثلا np.nan:

a = np.full([height, width, 9], np.nan)

 وفي إصدارات أقدم يمكن عمل ذلك بخطوتين، إنشاء المصفوفة ثم ملؤوها بقيمة NaN

a = numpy.empty((3,3,)) # مصفوفة فارغة
a[:] = numpy.nan        # ملأ المصفوفة بقيم محددة

>>> a
array([[ NaN,  NaN,  NaN],
       [ NaN,  NaN,  NaN],
       [ NaN,  NaN,  NaN]])

ويمكن أيضا باستخدام عملية الضرب:

np.nan * np.ones(shape=(3,2))

array([[ nan,  nan],
       [ nan,  nan],
       [ nan,  nan]])

 

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

هناك دالتين في numpy يمكنهما فعل ذلك بسهولة وهما numpy.empty() و numpy.nan() ، حيث تستخدمان سويا في انشاء  المصفوفة الفارغة، عن طريق انشاء مصفوفة في البداية باستخدام ا numpy.empty() ثم ملئها بقيم nan باستخدام numpy.nan().

يمكن استخدامها عن طريق تمرير أبعاد المصفوفة المراد انشاءها بدالة  numpy.empty() ثم استخدام الدالة numpy.nan() كالتالي:

an_array = np.empty((4,3))

an_array[:] = np.NaN

print(an_array)
OUTPUT
[[nan nan nan]
 [nan nan nan]
 [nan nan nan]
 [nan nan nan]]

خيار أخر عن طريق استخدام الدالة Numpy.full وذلك لملئ المصفوفة بالقيم nan كالتالي:

a = np.full([height, width], np.nan)

حيث أن height هي عدد الصفوف في المصفوفة التمراد انشاءها بينما width هو عدد الاعمدة.

تمّ تعديل بواسطة Ahmed Sharshar
1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن