从numpy数组中删除一个元素

Piy*_*are 1 python numpy pandas numpy-ndarray

我的工作numpy array如下:

  input_series =  ['BUY' 'SELL' 'BUY' 'SELL' 'BUY' 'SELL' 'SELL' 'SELL' 'BUY' 'SELL' nan nan
     nan nan nan nan nan nan nan]
Run Code Online (Sandbox Code Playgroud)

我正在搜索数组中的特定值,如果元素存在则删除

我这样做了如下:

delete_indices = list()
val = ['BUY','SELL','No','YES']
found_index = np.where(lowercase_series_nparray == val)                                                
delete_indices.append(found_index)
Run Code Online (Sandbox Code Playgroud)

delete_indices 得到如下:

[(array([], dtype=int64),), (array([], dtype=int64),), (array([], dtype=int64),), (array([], dtype=int64),), (array([], dtype=int64),), (array([], dtype=int64),), (array([], dtype=int64),), (array([], dtype=int64),), (array([], dtype=int64),), (array([], dtype=int64),), (array([], dtype=int64),), (array([], dtype=int64),), (array([], dtype=int64),), (array([], dtype=int64),), (array([], dtype=int64),), (array([0, 2, 4, 8], dtype=int64),), (array([1, 3, 5, 6, 7, 9], dtype=int64),), (array([], dtype=int64),), (array([], dtype=int64),), (array([], dtype=int64),)]
Run Code Online (Sandbox Code Playgroud)

在我尝试删除之后:

new_output_series = numpy.delete(input_series, delete_indices)
Run Code Online (Sandbox Code Playgroud)

但是得到错误 setting an array element with a sequence.

Joe*_*Joe 5

如果来自这样的数组:

input_series = np.array(['BUY', 'a', 'b', 'SELL', 'YES', 'SELL', 'No', 'c', 'd', 'SELL'])
Run Code Online (Sandbox Code Playgroud)

你想删除这些元素:

['BUY','SELL','No','YES']
Run Code Online (Sandbox Code Playgroud)

只需将这些设置为数组:

val = np.array(['BUY','SELL','No','YES'])
Run Code Online (Sandbox Code Playgroud)

进而:

new_output_series = np.setdiff1d(input_series,val)
Run Code Online (Sandbox Code Playgroud)

输出:

 ['a' 'b' 'c' 'd']
Run Code Online (Sandbox Code Playgroud)