質問
3つの座標(x、y、z)を持つMATRIXというnumpy行列変数があるとします。
次のコードを使用してマトリックスの値にアクセスしています
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]
簡単なテストを実行しましたが、そのように見えますが、すべてのケースでそうではないかもしれません。 numpy行列を使用してPythonで角括弧はどのように機能しますか?初日から、私はそれらがどのように機能するか混乱しました。
ありがとう
解決
matrix
ではなく array
インスタンスがあると仮定します。後者は2つの次元しか持つことができないためです。
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
これは、numpy array
に対してのみこのように機能します。 Pythonの組み込みタプルとリストは、整数だけではなく、タプルによるインデックス付けができません。
他のヒント
別のタプルでタプルをインデックス化することはできないため、そのコードはいずれも有効ではありません。
所属していません StackOverflow