Arrays 基于行将二维numpy数组拆分为块
我有一个csv文件中的数据块,我已将其转换为x、y和z值的numpy数组。数据是一系列的行,我组织了数据,使这些行按x值排序,然后按y值排序,从而得到我想要的正确顺序 我遇到的问题是,这些数据包含一系列行,我想将数组拆分为块,并为我可以处理的每一行划分一个部分。我有一些代码可以找到拆分阵列所需的点: 对于0范围内的i,数组长度: 如果数据_排序[i][0]==数据_排序[i+1][0]: 通过 其他: 打印拆分 其中data_sort包含我的数组,代码检查列中的值是否更改。如果连续列值发生更改,我需要拆分数组。这张照片只是用来测试我的分割次数是否正确 是否有人有一种很好的方法可以做到这一点,而不需要知道所需的最终阵列大小 编辑 如果输入数据为:Arrays 基于行将二维numpy数组拆分为块,arrays,python-3.x,numpy,split,Arrays,Python 3.x,Numpy,Split,我有一个csv文件中的数据块,我已将其转换为x、y和z值的numpy数组。数据是一系列的行,我组织了数据,使这些行按x值排序,然后按y值排序,从而得到我想要的正确顺序 我遇到的问题是,这些数据包含一系列行,我想将数组拆分为块,并为我可以处理的每一行划分一个部分。我有一些代码可以找到拆分阵列所需的点: 对于0范围内的i,数组长度: 如果数据_排序[i][0]==数据_排序[i+1][0]: 通过 其他: 打印拆分 其中data_sort包含我的数组,代码检查列中的值是否更改。如果连续列值发生更改,
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 ]])
我希望将阵列拆分为以下方式:
[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.splittest 2完成的,但这只是将数组拆分为偶数块您可以使用np.split,如下所示
假设要将阵列拆分为4组。
组1-索引0到1
第2组-索引2至3
第3组-索引4至8
第4组-指数9至10
那你就可以了
np.split(arr, [1,3,8])
这将给
[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 ]])]
这不是我真正想要的,我会编辑帖子以显示所需的输出,但我已经知道拆分阵列的位置。如果你已经知道要拆分的索引,为什么不直接将这些索引传递给np.split,或者我仍然缺少一些东西呢?我认为n.split不允许您指定分割的位置,而是指定块的数量,但我可能错了。您可以将索引指定为数组