كيفية تطبيق قناع على مصفوفة numpy ثنائية الأبعاد
لتطبيق القناع (mask) بشكل صحيح على مصفوفة numpy
ثنائية الأبعاد، يمكنك استخدام الوظيفة numpy.ma.masked_where
بدلاً من استخدام numpy.ma.masked_array
مع تكرار القناع (mask) لتكوين قناع ثنائي الأبعاد. هذا الأمر يجعل العملية أسهل وأكثر فعالية. إليك كيف يمكن القيام بذلك:
pythonimport numpy as np
x = np.array([[1, 2], [2, 3], [3, 4]])
mask = [False, False, True]
# تكرار القناع لتكوين قناع ثنائي الأبعاد
mask2D = np.repeat([mask], x.shape[1], axis=0).T
# تطبيق القناع على المصفوفة الثنائية الأبعاد
newX = np.ma.masked_where(mask2D, x)
print(newX)
ستحصل على الناتج التالي:
lua[[1 2]
[2 3]
[-- --]]
هذا الناتج يعكس تطبيق القناع على المصفوفة الأساسية x
، حيث أن القيم في المواضع التي تتوافق مع True في القناع mask
تصبح قيم معقودة (masked) في المصفوفة الناتجة newX
.
المزيد من المعلومات
بالطبع! في الكود السابق، استخدمت numpy.repeat
لتكرار القناع mask
ليتناسب مع عدد الأعمدة في المصفوفة x
. ثم استخدمت np.ma.masked_where
لتطبيق القناع على المصفوفة الأساسية x
، حيث تم تحويل القيم التي تتوافق مع True في القناع إلى قيم معقودة (masked) في المصفوفة الناتجة newX
.
يمكنك أيضًا استخدام np.ma.compress_rows
لضغط الصفوف المعقودة (masked rows) في المصفوفة newX
، مما يعيد المصفوفة إلى شكلها الأصلي بدون الصفوف المعقودة:
pythonnewX = np.ma.compress_rows(newX)
print(newX)
ستحصل على الناتج التالي:
lua[[1 2]
[2 3]]
هذا الأمر يمكن أن يكون مفيدًا إذا كنت بحاجة إلى إزالة الصفوف المعقودة من المصفوفة الناتجة.