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

السؤال

نشر

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

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

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

Recommended Posts

  • 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])

 

  • 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]])
"""

    

 

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...