كيفية نقل العناصر في مصفوفة numpy (مع أمثلة)
يمكنك استخدام إحدى الطرق التالية لإزاحة عناصر مصفوفة NumPy:
الطريقة الأولى: تبديل العناصر (الاحتفاظ بجميع العناصر الأصلية)
#shift each element two positions to the right data_new = np. roll (data, 2)
الطريقة الثانية: تبديل العناصر (السماح باستبدال العناصر)
#define shifting function
def shift_elements (arr, num, fill_value):
result = np. empty_like (arr)
if num > 0:
result[:num] = fill_value
result[num:] = arr[:-num]
elif num < 0:
result[num:] = fill_value
result[:num] = arr[-num:]
else :
result[:] = arr
return result
#shift each element two positions to the right (replace shifted elements with zero)
data_new = shift_elements(data, 2, 0)
توضح الأمثلة التالية كيفية استخدام كل طريقة عمليًا.
الطريقة الأولى: تبديل العناصر (الاحتفاظ بجميع العناصر الأصلية)
يوضح التعليمة البرمجية التالية كيفية استخدام الدالة np.roll() لتحويل كل عنصر من عناصر مصفوفة NumPy إلى موضعين إلى اليمين:
import numpy as np #create NumPy array data = np. array ([1, 2, 3, 4, 5, 6]) #shift each element two positions to the right data_new = np. roll (data, 2) #view new NumPy array data_new array([5, 6, 1, 2, 3, 4])
لاحظ أنه تم نقل كل عنصر إلى موقعين إلى اليمين وتم نقل العناصر الموجودة في نهاية المصفوفة إلى الأمام.
يمكننا أيضًا استخدام رقم سالب في الدالة np.roll() لنقل العناصر إلى اليسار:
import numpy as np #create NumPy array data = np. array ([1, 2, 3, 4, 5, 6]) #shift each element three positions to the left data_new = np. roll (data, -3) #view new NumPy array data_new array([4, 5, 6, 1, 2, 3])
الطريقة الثانية: تبديل العناصر (السماح باستبدال العناصر)
يمكننا أيضًا تحديد دالة مخصصة لتحويل عناصر مصفوفة NumPy والسماح باستبدال العناصر المتغيرة بقيمة معينة.
على سبيل المثال، يمكننا تعريف الدالة التالية لإزاحة العناصر واستبدال جميع العناصر المزاحّة بالقيمة 0:
import numpy as np
#create NumPy array
data = np. array ([1, 2, 3, 4, 5, 6])
#define custom function to shift elements
def shift_elements (arr, num, fill_value):
result = np. empty_like (arr)
if num > 0:
result[:num] = fill_value
result[num:] = arr[:-num]
elif num < 0:
result[num:] = fill_value
result[:num] = arr[-num:]
else :
result[:] = arr
return result
#shift each element two positions to the right and replace shifted values with zero
data_new = shift_elements(data, 2, 0)
#view new NumPy array
data_new
array([0, 0, 1, 2, 3, 4])
يمكننا أيضًا استخدام رقم سالب في الدالة لنقل العناصر إلى اليسار:
import numpy as np
#create NumPy array
data = np. array ([1, 2, 3, 4, 5, 6])
#define custom function to shift elements
def shift_elements (arr, num, fill_value):
result = np. empty_like (arr)
if num > 0:
result[:num] = fill_value
result[num:] = arr[:-num]
elif num < 0:
result[num:] = fill_value
result[:num] = arr[-num:]
else :
result[:] = arr
return result
#shift each element three positions to the left and replace shifted values with 50
data_new = shift_elements(data, -3, 50)
#view new NumPy array
data_new
array([ 4, 5, 6, 50, 50, 50])
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ عمليات شائعة أخرى في NumPy:
كيفية حساب تكرارات العناصر في NumPy
كيفية فرز مجموعة NumPy حسب العمود
كيفية حساب وضع مجموعة NumPy