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

عبدالباسط ابراهيم

الأعضاء
  • المساهمات

    5650
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    11

كل منشورات العضو عبدالباسط ابراهيم

  1. يمكنك أيضاً استخدم pickle لتنفيذ المطلوب كالتالي import pickle my_data = {'a': [1, 2.0, 3, 4+6j], 'b': ('string', u'Unicode string'), 'c': None} output = open('data.pkl', 'wb') pickle.dump(my_data, output) output.close() ويمكنك قراءة البيانات من الملف كالتالي import pprint, pickle pkl_file = open('data.pkl', 'rb') data1 = pickle.load(pkl_file) pprint.pprint(data1) pkl_file.close() وقم بقراءة الإجابات على هذا السؤال ستفيدك كثيراً في تنفيذ المطلوب
  2. هل التغييرات التي تجريها يتم تحديثها على المتصفح؟
  3. يمكنك استخدام astype مع المعامل copy بالقيمة false a = a.astype(numpy.float32, copy=False) لكن لاحظ أن استخدام المعامل copy بالقيمة false أنه دائماً يقوم بعمل view وليس copy حيث أن هذه الدالة تقوم بتفادي النسخ إذا كانت تقدر على ذلك فهناك حالات لا تستطيع تنفيذ ذلك
  4. إذا كنت تستخدمين الإضافة webpack-dev-server قومي بالتأكد من وجود الخاصية التالية devServer: { writeToDisk: true } ذلك في حالة أنه يتم عمل compile بنجاح
  5. يمكنك استخدام np.isnan كما في التعليق السابق مع استخدام sum أو min ولكن أيضاً يمكنك استخدام Dot numpy.isnan(numpy.dot(a, a)) كما يمكنك استخدام any numpy.any(numpy.isnan(a)) يعتبر استخدام dot الأسرع من بين الدوال السابقة
  6. نعم هناك العديد من الدوال التي تمكنك من تنفيذ المطلوب مثل استخدام concatenate a = np.array([[1, 2], [3, 4]]) b = np.array([[5, 6]]) np.concatenate((a, b), axis=0) array([[1, 2], [3, 4], [5, 6]]) np.concatenate((a, b.T), axis=1) array([[1, 2, 5], [3, 4, 6]]) np.concatenate((a, b), axis=None) array([1, 2, 3, 4, 5, 6]) لاحظ استخدام المعامل axis كما يمكنك استخدام stack a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) np.stack((a, b)) array([[1, 2, 3], [4, 5, 6]]) ويمكنك أيضاً استخدام الدالة array كالتالي numpy.array( LIST )
  7. جرب القيام باستخدام ال head واستخدام ال cdn كالتالي import "../styles/globals.css"; import Head from "next/head"; function MyApp({ Component, pageProps }) { return ( <> <Head> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous" /> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW" crossorigin="anonymous" ></script> </Head> <Component {...pageProps} /> </> ); } export default MyApp; جرب هذه الطريقة وأخبرني بالنتيجة
  8. تقوم الدالة argsort بإرجاع المؤشرات المستخدمة لاحقاً في فرز المصفوفة وتكون تصاعدياً إفتراضياً عن طريق إرجاع index العنصر حسب ترتيبه عند ترتيبه تصاعدياً وفي المثال السابق الذي طرحته لماذا تتوقع ذلك الناتج لذلك قم بالإطلاع النتاج وستعرف طريقة عملها print (arr.argsort()) # Output: [2 3 1 0] الناتج السابق يعني أن ال index 2 يجب أن يكون في أول المصفوفة ويعني أيضاً أنه أصغر رقم 2 هو ال index الخاص بالعنصر 0.0 3 هو ال index الخاص بالعنصر 0.1 1 هو ال index الخاص بالعنصر 1.41 0 هو ال index الخاص بالعنصر 1.48
  9. يمكنك استخدام العديد من الدوال السابقة كما في التعليقات ولكن إذا كنت تريد تحويلها إلى نوع float فهناك دالة لذلك np.asfarray حيث ترجع المصفوفة المطلوبة إلى نوع float import numpy as np stringArray = np.array(["1.000", "1.235", "0.000125", "2", "55", "-12.35", "0", "-0.00025"]) floatArray = np.asfarray(stringArray, dtype = float) print(stringArray) print(floatArray) الناتج يكون كالتالي ['1.000' '1.235' '0.000125' '2' '55' '-12.35' '0' '-0.00025'] [ 1.000e+00 1.235e+00 1.250e-04 2.000e+00 5.500e+01 -1.235e+01 0.000e+00 -2.500e-04]
  10. جرب القيام يتنفيذ الأمر firebase deploy من داخل المجلد functions بدلاً من تنفيذ الأمر السابق من داخل ال root
  11. كما ترى في التعليقات فإنه توجد العديد من الطرق لتنفيذ المطلوب فمثلاً يمكنك استخدام for loop كالتالي x[[z for z in range(x.size) if not z in exclude]] قم بتحديد ال exclude من خلال list تحتوي على جميع العناصر التي لا تريدها كما يمكنك استخدام hstack كما في المثال التالي a = [0,1,2,3,4,5,5,6,7,8,9] np.hstack((a[:3], a[4:])) #قم بتحديد المقطع الذي تريد حذفه array([0, 1, 2, 4, 5, 5, 6, 7, 8, 9])
  12. بالإضافة لاستخدام repeat و broadcast_to يمكنك أيضاً استخدام الدالة np.tile بسهولة حيث تقوم بتحديد ال shape كالتالي import numpy as np a = np.array([[1,2],[1,2]]) b = np.tile(a,(3, 1,1)) b.shape (3,2,2) b array([[[1, 2], [1, 2]], [[1, 2], [1, 2]], [[1, 2], [1, 2]]])
  13. كما شرح محمد في التعليق السابق فهي تستخدم للقيام بجلب بعض البيانات في الخادم وهناك مهام نستخدمها في المتصفح وهذه بعض الخصائص الخاص بال getInitialProps تستَخدَم لجَلْب بعض البيانات بشكل غير متزامن ، ويتم توليدها من خلال ال props سيتم تنفيذ الدالة getInitialProps على الخادم فقط.من تحميل الموقع المبدئي يمكنك استخدامها في المتصفح من خلال ال routing لا يمكننا استخدامها في ال children components ويفضل استخدام getStaticProps أو getServerSideProps بدلا من getInitialProps. بداية من Next.js 9.3 ويمكنك قراءة المزيد من المعلومات حول getStaticProps و getServerSideProps من خلال هذا السؤال
  14. يجب عليك فهم الخطأ أولاً [0]arr ليست مصفوفة، بل هي العنصر الأول من arr وبالتالي ليس لها أي أبعاد. حاول استخدام [0:1] بدلا من ذلك ، الذي سيعيد العنصر الأول من داخل lلمصفوفة صنف واحد واستخدام .np.concatenate بشكل طبيعي np.concatenate((arr, arr[0:1])) أو يمكنك تحويل العنصر [0]arr لمصفوفة np.concatenate((arr, np.array([arr[0]])))
  15. يمكنك استخدام ال np.argsort temp = np.random.randint(1,10, 10) temp array([5, 2, 7, 4, 4, 2, 8, 6, 4, 4]) temp[np.argsort(-temp)] لاحظ أنه هذا الحل أسرع قليلاً نتيجة أنه لا يتم ضرب المصفوفة مرتين في السالب لعكس الإتجاه وغذا كنت تهتم لأمر السرعة كثيراً فيعتبر الحل الأسرع نسبياً هو np.flip عن بقية الحلول
  16. توجد العديد من الطرق المستخدمة سواء باستخدام python أو numpy مثل استخدام numpy.bincounts أو collections.Counter كما يمكنك أيضاً استخدام np.unique كالتالي values, counts = np.unique(a, return_counts=True) ind = np.argmax(counts) print(values[ind]) # طباعة الرقم الأكثر تكراراً يمكنك أيضاً استخدام statistics.mode بداية من Python 3.4 from statistics import mode mode([1, 2, 3, 1, 2, 1, 1, 1, 3, 2, 2, 1]) # 1 وإذا كان هناك عدة عناصر بنفس التكرار وتريد إرجاعهم جميعاً نستخدم statistics.multimode from statistics import multimode multimode([1, 2, 3, 1, 2]) # [1, 2]
  17. يمكنك بالطبع تنفيذ ذلك من خلال numpy ولكن هناك حالتين لتنفيذ ذلك إذا كنت تريد التغيير في الدالة الأصلية يمكنك استخدام الدالة shape ar.shape = (-1, ncols) الكود السابق يقوم بالتعديل على shape المصفوفة الأصلية أما إذا كنت تريد إرجاع مصفوفة جديدة يمكنك استخدام الدالة reshape كما تم الشرح في التعليقات السابقة new = np.reshape(arr, (-1, ncols))
  18. بالإضافة للشرح الوافي ل reshape كما في التعليق السابق ولكن إذا كانت هناك العديد من الأبعاد وتحتاج عمل flat للكل عدا البعد الأخير يمكنك استخدام الحل التالي arr = numpy.zeros((50,100,25)) new_arr = arr.reshape(-1, arr.shape[-1]) new_arr.shape # (5000, 25) أو مثلاً عدا آخر بعدين arr = numpy.zeros((3, 4, 5, 6)) new_arr = arr.reshape(-1, *arr.shape[-2:]) new_arr.shape # (12, 5, 6) لاحظ مثال آخر arr = numpy.zeros((3, 4, 5, 6, 7, 8)) new_arr = arr.reshape(*arr.shape[:2], -1, *arr.shape[-2:]) new_arr.shape # (3, 4, 30, 7, 8)
  19. تعتبر تقنية ال PWA ما هي إلا موقع تم أعداده مسبقاً للعمل ك PWA والفرق بين الموقع العادي وال PWA هو زيادة مميزات التطبيقات على الموقع مثل إمكانية العمل بدون إنترنت أو التنبيهات وإمكانية تثبيته كل هذه الخصائص يتم إضافتها للموقع من خلال تقنية ال PWA بواسطة service workers وweb app manifests يمكنك البحث عنهما للمزيد من المعلومات لذلك تعتمد تطبيقات ال PWA على المتصفح واللغات المستخدمة في الويب وهو ليس إطار عمل مثلاً بينما في react native and flutter يتم التعامل مع ال native api ويمكنك رفع تطبيق ال PWA على أي متجر ولكن ليس apple store على ما أعتقد ويعمل كأي تطبيق تم بناءه من خلال react native and flutter ولكن مع بعض الإختلافات البسيطة تعتبر تطبيقات ال PWA أكثر سهولة عن غيرها ولكن ليست في مثل قوة التطبيقات الأخرى لذلك يمكنك إختيار التيقنية التي تخدم أهدافك
  20. يمكنك استخدام ravel أو flatten أو flat ولكن لكل دالة هدف حيث أن ravel تقوم بإرجاع view من المصفوفة أي أنه عند التغيير في المصفوفة الجديدة تطبق التغييرات على المصفوفة القديمة a = np.array([[1,2,3], [4,5,6]]) b = a.ravel() b array([1, 2, 3, 4, 5, 6]) بينما flatten تقوم بإرجاع نسخة أو copy من المصفوفة القديمة c = a.flatten() إنما flat تقوم بإرجاع iterator وليس مصفوفة d = a.flat
  21. لاحظ هذا الرابط يحتوي على مسار كامل لبناء API أما بالنسبة التعامل مع خدمات التخزين السحابي AWS S3 فهناك تطبيق كامل لبناء موقع نستخدم فيه AWS S3
  22. ربما تم تحديث المسارات ولكن بالنسبة للدروس الخاصة بال API فهي موجودة في هذا الرابط والدروس الخاصة بالتعامل مع خدمات التخزين السحابي AWS S3 فستجدها في المشروع تطبيق مشاركة الفيديوهات والجزء الخاص بال AWS S3 ستجده أيضاً في هذا الرابط بالطبع يمكنك الدخول للروابط السابقة إذا كنت مشترك في دورة تطوير تطبيقات الويب باستخدام لغة PHP ويفضل الإلتزام أيضاً بترتيب الدروس حتى لا تفوت جزء مهم من الشرح
  23. يمكنك أيضاً بما أنك تستخدم 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 إذا كنت تهتم للسرعة
  24. يمكنك بالطبع عن طريق تغيير إعدادات الطباعة من خلال set_printoptions بواسطة المعامل suppress=True كما في التعليقات السابقة ولكن أحياناً تحتاج لتنفيذ هذه الإعدادت locally ويمكنك عمل ذلك من خلال context manager لذلك يكون الكود كالتالي x = np.random.random(10) with np.printoptions(precision=3, suppress=True): print(x) # [ 0.073 0.461 0.689 0.754 0.624 0.901 0.049 0.582 0.557 0.348] لاحظ أنه إذا قمت بالطباعة خارج هذا ال context manager سترجع إعدادات الطباعة كما كانت print(x) # [ 0.07334334 0.46132615 0.68935231 0.75379645 0.62424021 0.90115836 # 0.04879837 0.58207504 0.55694118 0.34768638]
  25. نعم يمكنك تنفيذ المطلوب بواسطة الكود التالي app.get(/^\/(posts|articles)\/(.+)/, function (req, res, next) { }); لاحظ أن (+) يعني وجود slug حيث أن يجب أن يحتوي حرف واحد للتأكيد من وجود ال slig أو يمكنك استخدام الحل التالي app.get('/:type(posts|articles)/:id', ...)
×
×
  • أضف...