يوفر Numpy طرقًا فعالة لتبرير المصفوفات باستخدام وظائف ناقلات ، وتقديم أداء محسّن و Simplicity مقارنةً بالتحول إلى حلقات python التقليدية. عناصر غير صفرية إلى اليسار أو اليمين أو لأعلى أو لأسفل مع الحفاظ على شكلها. defify تبرير (a ، invalid_val = 0 ، axis = 1 ، side = 'left'): إذا كان invalid_val هو np.nan: قناع = ~ np.isnan (أ) آخر: قناع = a! = invalid_val referified_mask = np.sort (قناع ، محور = محور) إذا (الجانب == 'UP') | (الجانب == "اليسار"): referified_mask = np.flip (مبرر_ ماسك ، المحور = المحور) Out = np.full (A.Shape ، invalid_val) إذا كان المحور == 1: Out [referified_mask] = a [قناع] آخر: out.t [referified_mask.t] = a.t [mask.t] ارجع إلى الخارج
مثال على الاستخدام
np.array ([[1،0،2،0] ، [3،0،4،0] ، [5،0،6،0] ، [0،7،0،8]]) # غلاف اليسار covered_left = تبرير (a ، axis = 1 ، side = 'left') طباعة ("المصفوفة الأصلية:") طباعة (أ) طباعة ("\ ncovered اليسار:") print (cover_left)صفيف أصلي: [[1 0 2 0] [3 0 4 0] [5 0 6 0] [0 7 0 8]] غطى اليسار: [[1 2 0 0] [3 4 0 0] [5 6 0 0] [7 8 0 0]]
import numpy as np def justify(a, invalid_val=0, axis=1, side='left'): if invalid_val is np.nan: mask = ~np.isnan(a) else: mask = a!=invalid_val justified_mask = np.sort(mask,axis=axis) if (side=='up') | (side=='left'): justified_mask = np.flip(justified_mask,axis=axis) out = np.full(a.shape, invalid_val) if axis==1: out[justified_mask] = a[mask] else: out.T[justified_mask.T] = a.T[mask.T] return outالتبرير لمصفوفة عامة n-dimensial
لتبرير صفيف n-dimensional ، يمكن استخدام الوظيفة التالية: pushax = lambda a: np.moveaxis (a ، axis ، -1) إذا كان invalid_val هو np.nan: قناع = ~ np.isnan (أ) آخر: قناع = a! = invalid_val referified_mask = np.sort (قناع ، محور = محور) إذا كان الجانب == "الجبهة": referified_mask = np.flip (مبرر_ ماسك ، المحور = المحور) Out = np.full (A.Shape ، invalid_val) if (AXIS ==-1) أو (AXIS == A.NDIM-1): Out [referified_mask] = a [قناع] آخر: pushax (Out) [pushax (referified_mask)] = pushax (a) [pushax (mask)] ارجع إلى الخارج
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3