我有一个像这样的坐标数组:
array = [[1,6],[2,6],[3,8],[4,10],[5,6],[5,7],[18,6],[19,5],[17,9],[10,5]]
我想将数组在6.和7.之间分割坐标([5,7],[18,6]),因为那里的X值存在间隙.我想得到两个独立的数组,arr1和arr2,其中arr1是拆分前的值,arr2是后面的值.
我想说,如果下一个X值大于10的差值,它将附加到arr2,否则为arr1,如下所示:
arr1 = []
arr2 = []
for [x,y] in array:
if next(x) > 10:
arr2.append(x,y)
else:
arr1.append(x,y)
有人可以帮我解决这个问题吗?
解决方法:
您可以执行以下操作:
ar = np.array([[1,6],[2,6],[3,8],[4,10],[5,6],[5,7],[18,6],[19,5],[17,9],[10,5]])
# get differences of x values
dif = ar[1:, 0] - ar[:-1, 0]
# get the index where you first observe a jump
fi = np.where(abs(dif) > 10)[0][0]
ar1 = ar[:fi+1]
ar2 = ar[fi+1:]
那么dif将是:
array([ 1, 1, 1, 1, 0, 13, 1, -2, -7])
fi将是5,ar1和ar2将是:
array([[ 1, 6],
[ 2, 6],
[ 3, 8],
[ 4, 10],
[ 5, 6],
[ 5, 7]])
和
array([[18, 6],
[19, 5],
[17, 9],
[10, 5]]),
分别.
这也可以让你获得数据中的所有跳转(你只需要改变fi = np.where(abs(dif)> 10)[0] [0]到fi = np.where(abs(dif)) > 10)[0])
标签:python,arrays,split
来源: https://codeday.me/bug/20190527/1164520.html