• 0

كيفية إضافة صف جديد إلى مصفوفة Numpy فارغة؟

باستخدام مصفوفات 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؟

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 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
1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 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]]
1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 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 إذا كنت تهتم للسرعة

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


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

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن