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

كيفية عمل مصفوفة numpy من خلال كل الإحتمالات الممكنة من دمج مصفوفتين؟

Fahmy Mostafa

السؤال

لدي مصفوفتين numpy كالتالي:

x = np.array([0, 1, 2])
y = np.array([3, 4, 5])

ما أريده هو عمل مصفوفة جديدة تكون عبارة عن دمج المصفوفتين كالتالي:

result = np.array([
    [0, 3],
    [0, 4],
    [0, 5],
    [1, 3],
    [1, 4],
    [1, 5],
    [2, 3],
    [2, 4],
    [2, 5]
])

كيف يمكنني عمل ذلك من خلال مكتبة numpy لإتمام المهمة بأسرع ما يكون؟

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

Recommended Posts

  • 1

في الإصدار الأحدث من numpy 1.8.x ،لديك دالة  numpy.meshgrid والتي توفر تنفيذًا أسرع بكثير:

دالة numpy.meshgrid() كانت تستخدم لتكون ثنائية الأبعاد فقط ، والآن أصبحت قادرة على ND. في هذا المثال ، ثلاثي الأبعاد:

In [115]:

%timeit np.array(np.meshgrid([1, 2, 3], [4, 5], [6, 7])).T.reshape(-1,3)
10000 loops, best of 3: 74.1 µs per loop
In [116]:

np.array(np.meshgrid([1, 2, 3], [4, 5], [6, 7])).T.reshape(-1,3)

Out[116]:
array([[1, 4, 6],
       [1, 5, 6],
       [2, 4, 6],
       [2, 5, 6],
       [3, 4, 6],
       [3, 5, 6],
       [1, 4, 7],
       [1, 5, 7],
       [2, 4, 7],
       [2, 5, 7],
       [3, 4, 7],
       [3, 5, 7]])

 

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

  • 0

يمكنك تنفيذ الجداءالديكارتي باستخدام التابع التالي اعتماداً على الدالة meshgrid في مكتبة نمباي :

import numpy as np
x = np.array([0, 1, 2])
y = np.array([3, 4, 5])
# تعريف تابع يقوم بعملية الجداء الديكارتي
def cartesian(*arrays):
    g = np.meshgrid(*arrays)        
    coord = [x.ravel() for x in g]
    p = np.vstack(coord).T
    return p
# استدعاء التابع وطباعة الخرج
print(cartesian(x,y))
# الخرج
'''
[[0 3]
 [1 3]
 [2 3]
 [0 4]
 [1 4]
 [2 4]
 [0 5]
 [1 5]
 [2 5]]
'''

 

تم التعديل في بواسطة Ali Haidar Ahmad
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يمكن حل هذه المشكلة بإستخدام الدالة product في المصفوفات و دالة itertools التي تسمح بالمرور على عناصر المصفوفات واحد تلو الأخر:

import numpy as np
#إنشاء المصفوفات
x = np.array([0, 1, 2])
y = np.array([3, 4, 5])
# إنشاء مصفوفة فارغة لإضافة الناتج فيها لاحقا
all = []

# إستخدام الحلقات مع دالة الضرب لإيجاد الناتج و إضافته للمصفوفة 
for r in itertools.product(x, y): 
  all.append([r[0],r[1]])  

np.array(all)

 

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...