سؤال بسيط حول مصفوفة نمباي في بيثون
سؤال
ودعونا نفترض لدي متغير المصفوفة نمباي دعا 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
وأنها لا تعمل إلا على هذا النحو لarray
s نمباي. بيثون المدمج في الصفوف والقوائم ليست فهرسة كتبها الصفوف، فقط من خلال الأعداد الصحيحة.
نصائح أخرى
وانها ليست من الممكن المؤشر الصفوف (tuple) مع الصفوف (tuple) آخر، لذلك لا شيء من هذا الرمز صالحا.