Mol*_*usq 5 python arrays numpy multidimensional-array
我有一个任意维度的Numpy数组,以及一个索引向量,其中每个维度包含一个数字。我想获得与索引集相对应的数组切片,小于所有维度的索引数组中的值,例如
A = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9,10,11,12]])
index = [2,3]
result = [[1,2,3],
[5,6,7]]
Run Code Online (Sandbox Code Playgroud)
直观的语法类似于A[:index],但这由于明显的原因而无法使用。
如果数组的尺寸是固定的,我可以写A[:index[0],:index[1],... :index[n]]; 我可以使用某种列表理解A[:i for i in index]吗?
您可以一次切片多个尺寸:
result = A[:2,:3]
Run Code Online (Sandbox Code Playgroud)
将维度1扩展到索引2,将维度2扩展到索引3。
如果您有任意尺寸,也可以创建一个tuple切片:
slicer = tuple(slice(0, i, 1) for i in index)
result = A[slicer]
Run Code Online (Sandbox Code Playgroud)
切片定义start(0),stop(您指定的索引)和step(1)-基本上像range但可用于索引。元组的第i个条目将切片数组的第i个维度。
如果仅指定stop-indices,则可以使用速记:
slicer = tuple(slice(i) for i in index)
Run Code Online (Sandbox Code Playgroud)
如果您知道尺寸的数量,我建议第一个选择,如果您不知道尺寸,则建议最后一个。
| 归档时间: |
|
| 查看次数: |
2485 次 |
| 最近记录: |