NumPy - Create Your Own ufunc

چگونه ufunc دلخواه خود را ایجاد کنیم؟

برای ایجاد ufunc دلخواه خود کافی است که یک تابع را تعریف کنید مانند حالت عادی که در پایتون تابعی را تعریف می‌کنید. سپس با استفاده از تابع شیء frompyfunc() آن را به کتابخانه ufuncها در NumPy اضافه کنید.

تابع شیء frompyfunc() به سه آرگومان نیاز دارد:

  1. function - اسم تابع
  2. inputs - تعداد آرگومان‌های ورودی (آرایه‌ها)
  3. outputs - تعداد آرایه‌های خروجی

به عنوان نمونه در کد زیر یک تابع دلخواه برای جمع کردن 2 آرایه تعریف شده است.


import numpy as np

def myadd(x, y):
  return x+y

myadd = np.frompyfunc(myadd, 2, 1)

print(myadd([1, 2, 3, 4], [5, 6, 7, 8]))

خروجی:

بررسی ufunc بودن یک تابع

با استفاده از دستور type() می‌توان ufunc بودن یک تابع را بررسی کرد. اگر تابع ufunc باشد عبارت <class 'numpy.ufunc'> برگردانده می‌شود. اگر ufunc نباشد، هر نوع دیگری باشد، نوع آن را برمی‌گرداند و در صورتی که کلاً آن را به عنوان تابع تشخیص ندهد، یک پیغام خطا را برمی‌گرداند.


import numpy as np

print(type(np.add)) # NumPy ufunc Function

print(type(np.concatenate)) # built-in NumPy function for joining two or more arrays

print(type(np.blahblah)) # something that does not exist. This will produce an error

خروجی: