سؤال

ودعونا نفترض لدي متغير المصفوفة نمباي دعا MATRIX مع 3 الإحداثيات: (س، ص، ض)

هل acessing قيمة المصفوفة من خلال التعليمات البرمجية التالية

myVar = MATRIX[0,0,0]

ويساوي

myVar = MATRIX[0,0][0]

أو

myVar = MATRIX[0][0,0]

وماذا عن إذا كان لدي التعليمات البرمجية التالية؟

myTuple = (0,0)
myScalar = 0
myVar = MATRIX[myTuple, myScalar]

هل السطر الأخير يعادل القيام

myVar = MATRIX[myTuple[0], myTuple[1], myScalar]

ولقد فعلت الاختبارات البسيطة، ويبدو ذلك، ولكن ربما أن الأمر ليس كذلك في جميع الحالات. كيف قوسين معقوفين تعمل في بيثون مع المصفوفات نمباي؟ منذ يوم واحد شعرت الخلط عن كيفية عملها.

والشكر

هل كانت مفيدة؟

المحلول

وأفترض أن يكون لديك مثيل array بدلا من matrix، لأن هذا الأخير فقط يمكن أن يكون لها بعدين.

وm[0, 0, 0] يحصل على عنصر في موقف (0، 0، 0). m[0, 0] يحصل على subarray كله (شريحة)، والذي هو في حد ذاته array. يمكنك الحصول على العنصر الأول من هذا subarray مثل هذا: m[0, 0][0]، ولهذا السبب تعمل كل من جمل (على الرغم من يفضل m[i, j, k] لأنه لم يكن لديك خطوة وسيطة غير الضرورية)

ونلقي نظرة على هذه الدورة ipython:

rbonvall@andy:~$ ipython
Python 2.5.4 (r254:67916, Sep 26 2009, 08:19:36) 
[...]

In [1]: import numpy.random

In [2]: m = numpy.random.random(size=(3, 3, 3))

In [3]: m
Out[3]: 
array([[[ 0.68853531,  0.8815277 ,  0.53613676],
        [ 0.9985735 ,  0.56409085,  0.03887982],
        [ 0.12083102,  0.0301229 ,  0.51331851]],

       [[ 0.73868543,  0.24904349,  0.24035031],
        [ 0.15458694,  0.35570177,  0.22097202],
        [ 0.81639051,  0.55742805,  0.5866573 ]],

       [[ 0.90302482,  0.29878548,  0.90705737],
        [ 0.68582033,  0.1988247 ,  0.9308886 ],
        [ 0.88956484,  0.25112987,  0.69732309]]])

In [4]: m[0, 0]
Out[4]: array([ 0.68853531,  0.8815277 ,  0.53613676])

In [5]: m[0, 0][0]
Out[5]: 0.6885353066709865

وأنها لا تعمل إلا على هذا النحو لarrays نمباي. بيثون المدمج في الصفوف والقوائم ليست فهرسة كتبها الصفوف، فقط من خلال الأعداد الصحيحة.

نصائح أخرى

وانها ليست من الممكن المؤشر الصفوف (tuple) مع الصفوف (tuple) آخر، لذلك لا شيء من هذا الرمز صالحا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top