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

كيفية الوصول إلى عمود معين من مصفوفة NumPy متعددة الأبعاد؟

Fahmy Mostafa

السؤال

لنفترض أن لدي المصفوفة التالية:

arr = numpy.array([[1, 2], [3, 4], [5, 6]])

عندما أستعمل arr[n] أحصل على صف بالكامل، [1, 2] مثلًا، كيف يمكنني أن أصل إلى أول خانة في كل عمود وأحصل على [1, 3, 5]؟ وهل هذا الأمر (إستخدام الأعمدة بدلًا من الصفوف) يؤثر على أداء السكريبت؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

يمكنك الوصول إلى أي جزء من أجزاء المصفوفة اعتماداً على مفهوم ال slicing في نمباي:

import numpy as np
arr = [[1, 2, 3], [7, 0, 7], [0, 8, 2]]
arr = np.array(arr)
print(arr)
print('0th row: ')
print(arr[0, :])
print('2nd column: ')
print(arr[:, 2])
# يمكن أيضًا تحديد عدة أعمدة أو صفوف
print('0th and 1st row:')
print(arr[:,[0,1]])
"""
[[1 2 3]
 [7 0 7]
 [0 8 2]]
0th row: 
[1 2 3]
2nd column: 
[3 7 2]
0th and 1st row:
[[1 2]
 [7 0]
 [0 8]]

"""

يمكنك أيضاً استخدام مفهوم ال Ellipsis:

# numpy_Array_name[…,column] للاعمدة
# numpy_Array_name[row,…] للاسطر
import numpy as np
arr = [[1, 2, 4], [5, 6, 8], [7, 2, 2]]
a = np.array(arr)
print(a)
print('0th column: ')
print(a[..., 0])
print('1st row: ')
print(a[1, ...])
"""
[[1 2 4]
 [5 6 8]
 [7 2 2]]
0th column: 
[1 5 7]
1st row: 
[5 6 8]
"""

المزيد من الأمثلة:

#i:j:k
#i فهرس البداية
#j فهرس التوقف
#k الخطوة
x = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
x[1:7:2]
#array([1, 3, 5])
x[-2:10]
#array([8, 9])
x[-3:3:-1]
#array([7, 6, 5, 4])
x[5:]
#array([5, 6, 7, 8, 9])
x = np.array([[[1],[2],[3]], [[4],[5],[6]]])
x.shape
#(2, 3, 1)
x[1:2]
"""array([[[4],
        [5],
        [6]]])
"""
x[...,0]
"""
array([[1, 2, 3],
       [4, 5, 6]])
"""

    

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يمكننا استخدام التقطيع slicing كالتالي:

[:,0]

هذا يسقرأ أول عنصر من كل مصفوفة جزئية (أول عنصر من مصفوفة متعددة الأبعاد)

arr = numpy.array([[1, 2], [3, 4], [5, 6]])

arr[:,0]

==> array([1, 3, 5])

وهي أسرع بكثير من:

[x[0] for x in arr]

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يمكنك أيضاً بالإضافة للحل السابق استخدام ال transpose بحيث يتم قلب المصفوفة  وبعدها يمكنك الوصول للعمود الذي تريده من خلال الصف كالتالي

array([[0, 1],
       [2, 3]])
np.transpose(x)
array([[0, 2],
       [1, 3]])
#لاحظ عناصر المصفوفة تم تبديل الصف مع العمود

ومن خلال التالي يمكنك تنفيذ ما تريده

arr.T[0]

سيكون الناتج كالتالي

array([1, 3, 5])

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...