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

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

Amer Abdallah

السؤال

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

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

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

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

 

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

Recommended Posts

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

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

 

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...