اذهب إلى المحتوى
  • 0

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

Amer Abdallah

السؤال

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

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]]])

 

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

Recommended Posts

  • 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
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 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]])

 

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

  • 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
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...