Fahmy Mostafa نشر 25 يونيو 2021 أرسل تقرير نشر 25 يونيو 2021 ما هي الطريقة الأكثر فاعلية لتعيين دالة map على مصفوفة numpy؟ الطريقة التي كنت أقوم بها في مشروعي الحالي هي كما يلي: import numpy as np arr = np.array([0, 1, 2, 3, 4, 5]) arr_squarer = lambda t: t ** 2 squares = np.array([arr_squarer (i) for i in arr_squarer]) لكن أعتقد أن هذه الطريقة غير عملية على الإطلاق، هل توجد طريقة أفضل للقيام بذلك من خلال مكتبة numpy فقط 2 اقتباس
1 Ali Haidar Ahmad نشر 25 يونيو 2021 أرسل تقرير نشر 25 يونيو 2021 إليك لطرق المستخدمة: import math import numpy x= np.array([0, 1, 2, 3, 4, 5]) g = lambda x: x ** 2 vg = numpy.vectorize(g) def array_for(v): return numpy.array([g(vi) for vi in v]) def array_map(v): return numpy.array(list(map(g, v))) def fromiter(v): return numpy.fromiter((g(vi) for vi in v), v.dtype) def vectorize(v): return numpy.vectorize(g)(v) def vectorize_without_init(v): return vg(v) والاختلاف في التعقيد "complexity" كما في الصورة المرفقة. لاحظ أن التعقيد الزمني يصبح متساوي تقريباً (الفرق في التعقيد يصبح مهمل تقريباً) عندما يزداد طول x عن 2^10. 2 اقتباس
1 عبدالله عبدالرحمن11 نشر 25 يونيو 2021 أرسل تقرير نشر 25 يونيو 2021 يمكنك إستخدام دالة lambda كما في الكود import numpy as np x = np.array([1, 2, 3, 4, 5]) f = lambda x: x ** 2 squares = f(x) أو إستخدام هذا الكود import numpy as np x = np.array([1, 2, 3, 4, 5]) squarer = lambda t: t ** 2 vfunc = np.vectorize(squarer) vfunc(x) 1 اقتباس
0 محمد أبو عواد نشر 25 يونيو 2021 أرسل تقرير نشر 25 يونيو 2021 الطريقة الأكثر فعالية لتعيين دالة على المصفوفة numpy هي استخدام التابع numpy.vectorize كالتالي import numpy as np arr = np.array([0, 1, 2, 3, 4, 5]) arr_squarer = lambda t: t ** 2 squarer = np.vectorize(arr_squarer) squarer(arr) 1 اقتباس
السؤال
Fahmy Mostafa
ما هي الطريقة الأكثر فاعلية لتعيين دالة map على مصفوفة numpy؟ الطريقة التي كنت أقوم بها في مشروعي الحالي هي كما يلي:
لكن أعتقد أن هذه الطريقة غير عملية على الإطلاق، هل توجد طريقة أفضل للقيام بذلك من خلال مكتبة numpy فقط
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.