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

السؤال

نشر

باستخدام مصفوفات Python القياسية ، يمكنني القيام بما يلي:

arr = []
arr.append([1,2,3])
arr.append([4,5,6]
print(arr)	# Output: [[1,2,3],[4,5,6]]

ومع ذلك ، لا يمكنني فعل الشيء نفسه في numpy. فمثلا:

arr = np.array([])
arr = np.append(arr, np.array([1,2,3]))
arr = np.append(arr, np.array([4,5,6]))
print(arr) # Ouput: [1,2,3,4,5,6]

لاحظ أنه تم دمج الصفوف معًَا

حاولت أيضًا أن أستخدم التابع vstack ، لكن عندما أستخدمه على مصفوفة فارغة، أحصل على:

ValueError: all the input array dimensions except for the concatenation axis must match exactly

لا أعرف سبب هذا الخطأ، لذلك كيف يمكنني إضافة صف جديد بمصفوفة فارغة في numpy؟

Recommended Posts

  • 1
نشر (معدل)

حسناً: كيف نضيف أعمدة وأسطر لصفوفات نمباي، أول طريقة باستخدام التابع column_stack لإضافة عمود:

# إضافة أعمدة
import numpy as np
arr = np.array([[3, 3, 2], [0, 8, 7]])
# طباعة المصفوفة الأصلية
print("initial_array : \n", str(arr));
# العمود المراد إضافته
col = np.array([0, 12])
# إضافة العمود
a = np.column_stack((arr, col)) # نمرر المصفوفة ثم العمود
# النتيجة
print ("resultant array\n", str(a))
"""
initial_array : 
 [[3 3 2]
 [0 8 7]]
resultant array
 [[ 3  3  2  0]
 [ 0  8  7 12]]
"""

ولإضافة عدة أعمدة دفعة واحدة:

# إضافة أعمدة
import numpy as np
arr = np.array([[3, 3, 2], [0, 8, 7]])
# طباعة المصفوفة الأصلية
print("initial_array : \n", str(arr));
# العمود المراد إضافته
col = np.array([[0, 12],[5,6]])
# إضافة العمود
a = np.column_stack((arr, col)) # نمرر المصفوفة ثم العمود
# النتيجة
print ("resultant array\n", str(a))
"""
initial_array : 
 [[3 3 2]
 [0 8 7]]
resultant array
 [[ 3  3  2  0 12]
 [ 0  8  7  5  6]]
"""

أو استخدام التابع np.hstack لإضافة أعمدة أيضاً:

# إضافة أعمدة
import numpy as np
arr = np.array([[3, 3, 2], [0, 8, 7]])
# طباعة المصفوفة الأصلية
print("initial_array : \n", str(arr));
# العمود المراد إضافته
col = np.array([[0, 12],[5,6]])
# إضافة العمود
a = np.hstack((arr, np.atleast_2d(col).T))#  نمرر المصفوفة ثم العمود
# حيث أن 
np.atleast_2d(col)
"""
array([[ 0, 12],
       [ 5,  6]])
"""
np.atleast_2d(col).T
"""
array([[ 0,  5],
       [12,  6]])
"""
# النتيجة
print ("resultant array\n", str(a))
"""
initial_array : 
 [[3 3 2]
 [0 8 7]]
resultant array
 [[ 3  3  2  0 12]
 [ 0  8  7  5  6]]
"""

أو من خلال التابع np.vstack لإضافة أسطر:

# إضافة أعمدة
import numpy as np
arr = np.array([[3, 3, 2], [0, 8, 7]])
# طباعة المصفوفة الأصلية
print("initial_array : \n", str(arr));
# السطر المراد إضافته
row = np.array([1, 2,5]) #  السطر الذي نريد إضافته
# إضافة السطر
a = np.vstack ((arr, row) ) # نمررالمصفوفة والسطر
# النتيجة
print ("resultant array\n", str(a))
"""
initial_array : 
 [[3 3 2]
 [0 8 7]]
resultant array
 [[3 3 2]
 [0 8 7]
 [1 2 5]]
"""

ولإضافة عدة أسطر دفعة واحدة:

# إضافة أعمدة
import numpy as np
arr = np.array([[3, 3, 2], [0, 8, 7]])
# طباعة المصفوفة الأصلية
print("initial_array : \n", str(arr));
# الأسطر المراد إضافتها
row = np.array([[1, 2,5],[2,3,2]]) #  السطر الذي نريد إضافته
# إضافة السطر
a = np.vstack ((arr, row) ) # نمررالمصفوفة والسطر
# النتيجة
print ("resultant array\n", str(a))
"""
initial_array : 
 [[3 3 2]
 [0 8 7]]
resultant array
 [[3 3 2]
 [0 8 7]
 [1 2 5]
 [2 3 2]]
"""

في بعض الأحيانً يكون لدينا مصفوفة فارغة ونحتاج إلى إضافة صفوف لها. يوفر Numpy وظيفة لإضافة صف  لمصفوفة Numpy فارغة باستخدام الدالة numpy.append .

import numpy as np
# إنشاء مصفوفة ثنائية فارغة
arr = np.empty((0,2), int) # هنا حددنا عدد أعمدة ب2 لذا فأي صف نضيفه يجب أن يكون له عمودين
print("Empty array:\n",arr)
# إضافة أسطر جديدة
arr = np.append(arr, np.array([[1,5]]), axis=0)
arr = np.append(arr, np.array([[6,7]]), axis=0)
print("array:\n")
print(arr)
"""
Empty array:
 []
array:

[[1 5]
 [6 7]]
"""

 

تم التعديل في بواسطة Ali Haidar Ahmad
  • 0
نشر

تحتاج إلى تعريف مصفوفة فارغة بالطريقة التالية:

arr = np.empty((0,3), int)

بعد ذلك يُمكنك إضافة الصفوف الجديدة:

import numpy as np

arr = np.empty((0,3), int)
arr = np.append(arr, np.array([[1, 2, 3]]), axis=0)
arr = np.append(arr, np.array([[4, 5, 6]]), axis=0)

print(arr) 

كما يُمكنك إستخدام الدالتين np.hstack و np.vstack:

import numpy as np

arr = np.array([])
arr = np.hstack((arr, np.array([1,2,3])))
# arr : => [1,2,3]

arr = np.vstack((arr, np.array([4,5,6])))
# arr : => [[1,2,3],[4,5,6]]

arr = np.vstack((arr, np.array([7,8,9])))
# arr : => [[1,2,3],[4,5,6],[7,8,9]]
  • 0
نشر

يمكنك أيضاً بما أنك تستخدم list بواسطة python

  • إنشاء list فارغة وإضافة البيانات التي تريدها 
  • ثم في الأخير تقوم بتحويلها ل numpy array
    import numpy as np
    
    list = []
    
    list.append([1,3,5])
    list.append([2,4,6])
    
    array2 = np.array(list)
    
    print(array2)
    #الناتج:
    
    #[[1 3 5]
    # [2 4 6]]

     

ولاحظ أنه في حالة كنت تستخدم for loop سيكون من الأفضل استخدام list ثم تحويلها لمصفوفة بدلاً من عمل append لمصفوفة numpy بداخل ال for loop إذا كنت تهتم للسرعة

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...