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

السؤال

نشر

لدي مصفوفة 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...