Python 从阵列中删除子阵列
我有一个numpy数组a和BPython 从阵列中删除子阵列,python,numpy,Python,Numpy,我有一个numpy数组a和B A = [ 1, 2, 5, 9.8, 55, 3] B = [ 3, 4] 现在,如何删除数组B的索引A[3]&A[4],然后将它们放在数组A的开头。 所以,我希望我的输出是 A = [9.8, 55, 1, 2, 5, 3] 注意:A和B都是numpy数组 非常感谢您的帮助 非numpy答案 A = [ 1, 2, 5, 9.8, 55, 3] B = [ 3, 4] new_arr = [A[i] for i in B if i<len(A)]
A = [ 1, 2, 5, 9.8, 55, 3]
B = [ 3, 4]
现在,如何删除数组B的索引A[3]&A[4],然后将它们放在数组A的开头。
所以,我希望我的输出是
A = [9.8, 55, 1, 2, 5, 3]
注意:A和B都是numpy数组
非常感谢您的帮助 非numpy答案
A = [ 1, 2, 5, 9.8, 55, 3]
B = [ 3, 4]
new_arr = [A[i] for i in B if i<len(A)] + [A[i] for i in range(len(A)) if i not in set(B)]
# [9.8, 55, 1, 2, 5, 3]
A=[1,2,5,9.8,55,3]
B=[3,4]
如果i使用布尔索引的一种方法是-
mask = np.in1d(np.arange(A.size),B)
out = np.r_[A[mask], A[~mask]]
样本运行-
In [26]: A = np.array([ 1, 2, 5, 9.8, 55, 3])
In [27]: B = np.array([ 3, 4])
In [28]: mask = np.in1d(np.arange(A.size),B)
In [29]: np.r_[A[mask], A[~mask]]
Out[29]: array([ 9.8, 55. , 1. , 2. , 5. , 3. ])
In [36]: idx = np.setdiff1d(np.arange(A.size),B)
In [37]: np.r_[A[B], A[idx]]
Out[37]: array([ 9.8, 55. , 1. , 2. , 5. , 3. ])
另一个是整数索引-
idx = np.setdiff1d(np.arange(A.size),B)
out = np.r_[A[B], A[idx]]
样本运行-
In [26]: A = np.array([ 1, 2, 5, 9.8, 55, 3])
In [27]: B = np.array([ 3, 4])
In [28]: mask = np.in1d(np.arange(A.size),B)
In [29]: np.r_[A[mask], A[~mask]]
Out[29]: array([ 9.8, 55. , 1. , 2. , 5. , 3. ])
In [36]: idx = np.setdiff1d(np.arange(A.size),B)
In [37]: np.r_[A[B], A[idx]]
Out[37]: array([ 9.8, 55. , 1. , 2. , 5. , 3. ])
发布的解决方案中有哪一个适合你吗?