假设我有一个名为MATRIX的numpy矩阵变量,其坐标为:(x,y,z).
通过以下代码获取矩阵的值
myVar = MATRIX[0,0,0]
Run Code Online (Sandbox Code Playgroud)
等于
myVar = MATRIX[0,0][0]
Run Code Online (Sandbox Code Playgroud)
要么
myVar = MATRIX[0][0,0]
Run Code Online (Sandbox Code Playgroud)
?
如果我有以下代码怎么办?
myTuple = (0,0)
myScalar = 0
myVar = MATRIX[myTuple, myScalar]
Run Code Online (Sandbox Code Playgroud)
最后一行是否等同于做
myVar = MATRIX[myTuple[0], myTuple[1], myScalar]
Run Code Online (Sandbox Code Playgroud)
我做了简单的测试,看起来似乎如此,但在所有情况下可能并非如此.方括号如何在带有numpy矩阵的python中工作?从第一天起,我就感到困惑,因为他们的工作方式
谢谢
我假设你有一个array实例而不是一个实例matrix,因为后者只能有两个维度.
m[0, 0, 0]获取位置(0,0,0)的元素.
m[0, 0]获得一个完整的子阵列(一个切片),这本身就是一个array.您可以像这样获得此子数组的第一个元素: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
Run Code Online (Sandbox Code Playgroud)
对于numpy来说,它只能像这样工作array.Python内置元组和列表不能通过元组转换,只能通过整数转换.