我有一个来自csv文件的数据块,我已经将其转换为一个由x,y和z值组成的numpy数组。数据是一系列的行,我对数据进行了组织,这样行就按照x和y值排序,这样就可以得到我想要的正确顺序。
我的问题是,这个数据包含一系列的行,我想将数组分成块,每一行都有一个我可以处理的部分。我有一些代码可以找到拆分数组所需的点:
for i in range(0,array_len):
if data_sort[i][0] == data_sort[i+1][0]:
pass
else:
print("split")其中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.split(test,2)完成的,但这只是将数组拆分为偶数块
发布于 2019-11-21 00:19:13
您可以使用np.split,如下所示。
假设您想要将数组拆分为4组。group1 -索引0到1 group2 -索引2到3 group3 -索引4到8 group4 -索引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 ]])]https://stackoverflow.com/questions/58958476
复制相似问题