引数の取り扱い上の最初のレベルは変換Pythonインタプリタ、から来ている[...]:
In [442]: class Foo():
...: def __getitem__(self,args):
...: print(args)
...:
In [443]: Foo()['str']
str
In [444]: Foo()[[1,2]]
[1, 2]
In [445]: Foo()[[1,2],]
([1, 2],)
In [446]: Foo()[(1,2)]
(1, 2)
In [447]: Foo()[(1,2),]
((1, 2),)
np.c_
はnp.lib.index_tricks.AxisConcatenator
のインスタンスです。それはとてもnp.bmat
互換性のある文字列を除き、それはタプルにすべての入力をオンにして、要素を反復処理__getitem__
# handle matrix builder syntax
if isinstance(key, str):
....
mymat = matrixlib.bmat(...)
return mymat
if not isinstance(key, tuple):
key = (key,)
....
for k, item in enumerate(key):
....
です。
[1,2]
を含むバリエーションのいずれかは、単一エレメントタプル([1,2],)
と同じです。 (1,2)
は、連結される2つの要素です。だから([1,2],[3,4])
です。
インデックス付けではリストとタプルも区別されることに注意してください(ただし、いくつかの矛盾があります)。
In [455]: x=np.arange(24).reshape(2,3,4)
In [456]: x[0,1] # tuple - index for each dim
Out[456]: array([4, 5, 6, 7])
In [457]: x[(0,1)] # same tuple
Out[457]: array([4, 5, 6, 7])
In [458]: x[[0,1]] # list - index for one dim
Out[458]:
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
In [459]: x[([0,1],)] # same
....
コードを見てください。これとファイル内の他のクラス/関数( 'indexing_tricks'?)は便利ですが、面白いコーディングです。 – hpaulj