Pergunta

Vamos supor que eu tenho uma variável de matriz numpy chamada MATRIX com 3 coordenadas:. (X, y, z)

É acessando o valor da matriz através do seguinte código

myVar = MATRIX[0,0,0]

igual a

myVar = MATRIX[0,0][0]

ou

myVar = MATRIX[0][0,0]

?

E se eu tenho o seguinte código?

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

É a última linha equivalente a fazer

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

Eu fiz testes simples e parece que sim, mas talvez isso não é assim em todos os casos. Como colchetes trabalhar em python com matrizes numpy? Desde o primeiro dia eu me senti confundido como a forma como eles funcionam.

Graças

Foi útil?

Solução

Eu suponho que você tem uma instância array em vez de um matrix, uma vez que esta só pode ter duas dimensões.

m[0, 0, 0] recebe o elemento na posição (0, 0, 0). m[0, 0] recebe um subarray todo (uma fatia), que se um array é. Você pode obter o primeiro elemento deste subarray assim:. m[0, 0][0], razão pela qual tanto sintaxes de trabalho (embora m[i, j, k] é preferido porque não tem o passo intermediário desnecessário)

Dê uma olhada nesta sessão 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

Ele só funciona como este para arrays numpy. Python embutido tuplas e listas não são indexáveis ??pelos tuplas, apenas inteiros.

Outras dicas

Não é possível indexar uma tupla com outra tupla, então nenhum de que o código é válido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top