我正在尝试获取数组A(N,3)的一部分(例如元素1-3和5-N),避免使用numpy.delete。下面是一个示例过程:
[[1,2,3],[4,5,6],[7,8,9],[3,2,1]] ==> [[1,2,3],[3,2,1]]
I was hoping to use something like
A[A != [1,2,3] ].reshape()
但是这样做会执行逐个元素的比较,因此会删除更多的元素。那该怎么办呢?我想到了这个方法,但似乎过于复杂且速度较慢:
A_removed = A[first_removed:last:removed,:]
mask = np.not_equal(A[:,None],A_removed)
mask = np.logical_and.reduce(mask,1)
A = A[mask].reshape()
有没有更快/更简洁的方法来做这件事?注意,假设 A 中的任意两个元素都不相等。
A[~(A != [1,2,3]).all(1)]
或者A[(A == [1,2,3]).any(1)]
。 - Divakarnumpy.delete
的工作。你不太可能比numpy.delete
更快地完成这个任务。最有可能的优化路径可能是重构你的计算以消除这个操作,而不是让这个操作变得更快。 - user2357112