首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于行将2Dnumpy数组拆分成块

基于行将2Dnumpy数组拆分成块
EN

Stack Overflow用户
提问于 2019-11-20 23:54:49
回答 1查看 401关注 0票数 0

我有一个来自csv文件的数据块,我已经将其转换为一个由x,y和z值组成的numpy数组。数据是一系列的行,我对数据进行了组织,这样行就按照x和y值排序,这样就可以得到我想要的正确顺序。

我的问题是,这个数据包含一系列的行,我想将数组分成块,每一行都有一个我可以处理的部分。我有一些代码可以找到拆分数组所需的点:

代码语言:javascript
复制
for i in range(0,array_len):
    if data_sort[i][0] == data_sort[i+1][0]:
        pass
    else:
        print("split")

其中data_sort包含我的数组,代码检查列中的值是否发生更改。当连续的列值发生变化时,我需要拆分数组。这张照片只是用来测试我的拆分次数是否正确。

有没有人不需要知道最终的数组大小就能做到这一点的好方法?

如果输入数据为:

代码语言:javascript
复制
array([[-0.18798 ,  0.028104, -0.14745 ],
   [-0.18798 ,  0.028214, -0.14732 ],
   [-0.11279 ,  0.028188, -0.21054 ],
   [-0.11279 ,  0.028214, -0.21052 ],
   [-0.18798 ,  0.028214,  0.14732 ],
   [-0.18798 ,  0.028104,  0.14745 ],
   [-0.037596,  0.028   , -0.23602 ],
   [-0.037596,  0.028214, -0.23585 ],
   [ 0.      ,  0.028   , -0.23899 ],
   [ 0.      ,  0.028214, -0.23883 ]])

我想将数组分成以下几种方式:

代码语言:javascript
复制
    [array([[-0.18798 ,  0.028104, -0.14745 ],
        [-0.18798 ,  0.028214, -0.14732 ],
        [-0.11279 ,  0.028188, -0.21054 ],
        [-0.11279 ,  0.028214, -0.21052 ],
        [-0.18798 ,  0.028214,  0.14732 ]]),
    array([[-0.18798 ,  0.028104,  0.14745 ],
        [-0.037596,  0.028   , -0.23602 ],
        [-0.037596,  0.028214, -0.23585 ],
        [ 0.      ,  0.028   , -0.23899 ],
        [ 0.      ,  0.028214, -0.23883 ]])]

这是使用np.split(test,2)完成的,但这只是将数组拆分为偶数块

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-21 00:19:13

您可以使用np.split,如下所示。

假设您想要将数组拆分为4组。group1 -索引0到1 group2 -索引2到3 group3 -索引4到8 group4 -索引9到10

然后你可以这样做

代码语言:javascript
复制
np.split(arr, [1,3,8])

这将会给你

代码语言:javascript
复制
[array([[-0.18798 ,  0.028104, -0.14745 ]]), array([[-0.18798 ,  0.028214, -0.14732 ],
       [-0.11279 ,  0.028188, -0.21054 ]]), array([[-0.11279 ,  0.028214, -0.21052 ],
       [-0.18798 ,  0.028214,  0.14732 ],
       [-0.18798 ,  0.028104,  0.14745 ],
       [-0.037596,  0.028   , -0.23602 ],
       [-0.037596,  0.028214, -0.23585 ]]), array([[ 0.      ,  0.028   , -0.23899 ],
       [ 0.      ,  0.028214, -0.23883 ]])]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58958476

复制
相关文章

相似问题

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