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

السؤال

نشر

ما هي الطريقة الأكثر فاعلية لتعيين دالة 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 فقط

Recommended Posts

  • 1
نشر

إليك لطرق المستخدمة:

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.

c.png

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...