新的较小的数组,不包括每列的一个值

A A*_*Ron 3 python arrays numpy matrix

在Python 2.7中使用numpy或任何方式如果我有一个任何大小的数组并想要排除某些值并输出新数组我该怎么做?这就是我想要的

[(1,2,3),                                        
 (4,5,6), then exclude [4,2,9] to make the array[(1,5,3),
 (7,8,9)]                                        (7,8,6)]
Run Code Online (Sandbox Code Playgroud)

我将始终排除与行长度相同的数据,并且每列始终只有一个条目.[(1,5,3)]将是我想要排除的数据的另一个例子.因此,每次循环该函数时,它都会将数组行大小减少一个.我想我必须使用一个蒙面数组或将我的掩码转换为一个蒙版数组并减去两个然后可能压缩输出但我不知道如何.谢谢你的时间.

Sau*_*tro 5

如果在拆开的1-D阵列中转换2-D阵列,则可以非常有效地执行此操作.然后重复数组中要排除的元素,调用e以进行元素比较:

import numpy as np
a = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]])
e = [1, 5, 3]    

ar = a.T.ravel()
er = np.repeat(e, a.shape[0])

ans = ar[er != ar].reshape(a.shape[1], a.shape[0]-1).T
Run Code Online (Sandbox Code Playgroud)

但是如果每个元素e只匹配一行,它将起作用a.


编辑:正如@Jaime所建议的那样,你可以避免ravel()直接做同样的结果:

ans = a.T[(a != e).T].reshape(a.shape[1], a.shape[0]-1).T
Run Code Online (Sandbox Code Playgroud)