20

変数で事前定義されたスライスを使用して、numpy 配列をスライスしようとしています。これは機能します:

b = fromfunction(lambda x,y: 10*x+y, (5,4),dtype=int) # Just some matrix

b[1:3,1:3]
# Output:
# array([[11, 12],
#       [21, 22]])

しかし、私がやりたいことは次のようなものです:

slice = "1:3,1:3"
b[slice]
# Output:
# array([[11, 12],
#       [21, 22]])

スライス変数の型は重要ではありません。例として文字列を使用しているだけです。そのようなスライス指定子を保存するにはどうすればよいですか?

4

2 に答える 2

27

内蔵slice機能が使えます

s = slice(1,3)
b[s,s]

ds = (s,s)
b[ds]
于 2012-09-27T08:16:51.753 に答える
15

numpy.s_これをnumpy.index_exp行う便利な方法を提供します。

the_slice = numpy.index_exp[1:3, 1:3]
b[the_slice]

slice、タプル、None、およびの組み合わせではできないことは何もできませんがEllipsis、配列をスライスするために使用するのとまったく同じ構文を使用できます ( と の唯一の違いはs_index_exp1 次元のスライス、s_スライス オブジェクトを返し、index_expそれをタプルにラップします)。

于 2012-09-27T09:29:16.793 に答える