让我们假设我有称为MATRIX用3个坐标的矩阵numpy的变量:(X,Y,Z)

时通过以下代码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]

我做了简单的测试,它似乎是这样,但也许事实并非如此在所有情况下。如何方括号在Python工作与numpy的矩阵?因为有一天我感到困惑,因为他们是如何工作的。

由于

有帮助吗?

解决方案

我想你有一个array实例,而不是一个matrix,因为后者只能有两个维度。

m[0, 0, 0]获得在位置(0,0,0)的元素。 m[0, 0]得到整个子阵列(片),这本身就是一个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

它仅适用像这样numpy的<=>秒。 Python的内置元组和列表不是由元组可转位,只是整数。

其他提示

这是不可能的索引与另一元组的元组,所以没有该代码是有效的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top