首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >形的索引数组的返回值

形的索引数组的返回值
EN

Stack Overflow用户
提问于 2015-09-04 16:12:32
回答 2查看 347关注 0票数 1

我希望从numpy数组中获得索引列表(或数组)的结果,其形式为:(len(索引),(一个索引操作的形状))。

有没有办法直接使用索引列表,而不使用for循环,就像我在mininal示例中使用的那样,如下所示?

代码语言:javascript
复制
c = np.random.randint(0, 5, size=(4, 5))
indices = [[0, slice(0, 4)], [1, slice(0, 4)], [1, slice(0, 4)], [2, slice(0, 4)]]

# desired result using a for loop
res = []
for idx in indices:
    res.append(c[idx])

应该注意的是,索引列表并不代表我的问题,它只是一个例子,通常它是在运行时生成的。但是,每个索引操作都返回相同的形状

EN

Stack Overflow用户

发布于 2015-09-04 16:29:38

看起来你基本上是从2D输入数组的开头开始切片,直到2 rows4 columns,然后拆分每一行。您可以使用c[:2,:4]进行切片,然后使用np.vsplit拆分行,从而获得一个单行解决方案,如下所示-

代码语言:javascript
复制
res_out = np.vsplit(c[:2,:4],2)

示例运行-

代码语言:javascript
复制
In [10]: c
Out[10]: 
array([[0, 2, 5, 1, 0],
       [1, 5, 5, 0, 3],
       [0, 1, 0, 6, 6],
       [2, 6, 2, 3, 3]])

In [11]: indices
Out[11]: [[0, slice(0, 4, None)], [1, slice(0, 4, None)]]

In [12]: # desired result using a for loop
    ...: res = []
    ...: for idx in indices:
    ...:     res.append(c[idx])
    ...:     

In [13]: res
Out[13]: [array([0, 2, 5, 1]), array([1, 5, 5, 0])]

In [14]: np.vsplit(c[:2,:4],2)
Out[14]: [array([[0, 2, 5, 1]]), array([[1, 5, 5, 0]])]

请注意,np.vsplit的输出将是二维数组的列表,而不是问题中发布的代码中的一维数组列表。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32393217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档