• 0

الحصول على مجموعة عشوائية من مصفوفة Numpy ثنائية الأبعاد

لدي مصفوفة Numpy كبيرة جدًا ثنائية الأبعاد 2D تبدو كالتالي:

array([[  0,   1,   2],
       [  3,   4,   5],
       [  6,   7,   8],
       # ....
       [909, 910, 911]])

كيف يمكنني الحصول على مصفوفة جديدة تحتوي على عدد معين من الصفوفة المختارة عشوائيًا من المصفوفة السابقة؟ كالتالي:

print(result)
array([[58,  59,  60],
      [118, 119, 120]])

 

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

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


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

يمكنك القيام بذلك  بالشكل التالي، حيث قمنا بتعريف التابع random.randint الذي يقوم بإنشاء مصفوفة عشوائية من  القيم الصحيحة ب 10 أسطر و 3 أعمدة، بحيث أعلى قيمة فيها هي 5. بعد ذلك قمنا باستخدام نفس التابع لكي يقوم بتوليد أعداد صحيحة أعلى قيمة فيها يساوي 10، وبحجم 3 أي سكون الخرج مصفوفة أحادية البعد، قيم هذه المصفوفة ستمثل فهارس الأسطر التي ستم اختيارها من المصفوفة الجديدة لتشكيل المصفوفة. وأخيراً نقوم باستخدام التعليمة arr[index,:] لعرض المطلوب. حيث  في مثالنا يمكنك أن تلاحظ أن المصفوفة index التي شكلناها تحوي القيم 9 9 4 وبالتالي سنختار الأسطر 9 9 4 من المصفوفة الأصلية لتشكيل المصفوفة الجديدة. كما يجب أن تلاحظ أننا حددنا أكبر قيمة في المصفوفة index بالعدد 10 أي ستكون القيم المولدة أقل من 10 أي من 0 ل 9 وذلك لأن عدد أسطر المصفوفة الأصلية هو 10 أي الفهارس من 0 ل 9 وهذا مهم لكي لانخرج عن حدود المصفوفة وبالتالي لتجنب ظهور أي خطأ.

import numpy as np
arr = np.random.randint(5, size=(10,3))
print(arr)
"""
[[4 1 1]
 [2 3 2]
 [1 4 1]
 [2 2 0]
 [1 3 3]
 [3 2 0]
 [2 0 3]
 [2 1 2]
 [4 0 4]
 [0 2 3]]
"""
index = np.random.randint(10, size=3)
print(index)
# [9 9 4]
arr[index,:]

أو من خلال استخدام التابع np.random.choice ليختار لنا الفهارس بطريقة عشوائية:

indices = np.random.choice(arr.shape[0],3, replace=False)
arr[indices]
"""
array([[3, 2, 0],
       [2, 3, 2],
       [2, 2, 0]])
"""
arr[np.random.choice(arr.shape[0], 4, replace=False)]
"""
array([[3, 2, 0],
       [0, 2, 3],
       [2, 2, 0],
       [1, 3, 3]])
"""

 

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

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


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

علينا أولا توليد عدد من الأرقام العشوائية للدلالة على الأسطر المختارة ويجب أن تكون أصغر من عدد أسطر المصفوفة لذلك نخزن عدد أسطر المصفوفة

number_of_rows = an_array.shape[0]

ثم نقوم بتوليد مجموعة الأعداد العشوائية: باستخدام random.choice والعدد الأقصى نحدده بالوسيط size

random_indices = np.random.choice(number_of_rows, size=2, replace=False)

أما الوسيط replace يمنع تكرار ظهور نفس الرقم (في حالتنا نفس السطر) .. ثم نقرأ قيمة الأسطر المرادة ونطبعها:

random_rows = an_array[random_indices, :]
تم تحديد الأسطر فقط وجلب كل الأعمدة

print(random_rows)

 

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

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


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

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

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

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


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

تسجيل الدخول

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


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