更新时间:2022-06-23 05:31:32
由于从 numpy的
提出的有关的索引可以使用的 片
内置功能和元组串联创建变量指标。
As suggested from numpy
's documentation about indexing you can use the slice
built-in function and tuple concatenation to create variable indexes.
在事实上:
在标简直就是一个片的文字符号
文字
In fact the :
in the subscript is simply the literal notation for a slice
literal.
在特定的:
等同于片(无)
(其中,本身就是等于片(无,无,无)
这里的参数是启动
,停止
和步
)。
In particular :
is equivalent to slice(None)
(which, itself, is equivalent to slice(None, None, None)
where the arguments are start
, stop
and step
).
例如:
a[(0,) * N + (slice(None),)]
相当于:
a[0, 0, ..., 0, :] # with N zeros
的:对于片
符号只能直接下标内部使用。例如,这将失败:
The :
notation for slices can only be used directly inside a subscript. For example this fails:
In [10]: a[(0,0,:)]
File "<ipython-input-10-f41b33bd742f>", line 1
a[(0,0,:)]
^
SyntaxError: invalid syntax
要允许任意尺寸的阵列中提取切片你可以写一个简单的功能,如:
To allow extracting a slice from an array of arbitrary dimensions you can write a simple function such as:
def make_index(num_dimension, slice_pos):
zeros = [0] * num_dimension
zeros[slice_pos] = slice(None)
return tuple(zeros)
和使用它作为:
In [3]: a = np.array(range(24)).reshape((2, 3, 4))
In [4]: a[make_index(3, 2)]
Out[4]: array([0, 1, 2, 3])
In [5]: a[make_index(3, 1)]
Out[5]: array([0, 4, 8])
In [6]: a[make_index(3, 0)]
Out[6]: array([ 0, 12])
您可以概括 make_index
做任何事情。要记住的重要一点是,它应该在年底,返回包含无论是整数或片
个元组
。
You can generalize make_index
to do any kind of things. The important thing to remember is that it should, in the end, return a tuple
containing either integers or slice
s.