假如我有个区间
a=np.array([1,2,3,4,5,6,7,8,9,10])
b=np.array([3,7])
我怎么才可以把向量a分成三类
一类为a1=[1,2,3] 一类为a2=[3,4,5,6,7],最后一类为a3=[7,8,9,10]呢
就是怎么用b来分割a呀?
求解答
import numpy as np
import more_itertools as mi
a=np.array([1,2,3,4,5,6,7,8,9,10])
b=np.array([3,7])
res = list(mi.split_when(a, lambda x, y: x in b))
result = [res[i] if i == 0 else [b[i-1]] + res[i] for i in range(len(res ))]
print(result)
如下,b可以多于2个元素
import numpy as np
a=np.array([1,2,3,4,5,6,7,8,9,10])
b=np.array([3,7])
res,tmp = [],list(a)
for i in b:
idx = tmp.index(i)
res.append(tmp[:idx+1])
tmp=tmp[idx:]
res.append(tmp)
print(res)
#out: [[1, 2, 3], [3, 4, 5, 6, 7], [7, 8, 9, 10]]
import numpy as np
a = np.array([1,2,3,4,5,6,7,8,9,10])
b = np.array([3,7])
a1 = a[np.where(a<=b[0])]
a2 = a[np.where((a>=b[0])&(a<=b[1]))]
a3 = a[np.where(a>=b[1])]
a1
array([1, 2, 3])
a2
array([3, 4, 5, 6, 7])
a3
array([ 7, 8, 9, 10])
请问有没有更一般化的写法,因为可能b向量有很多个数