簡體   English   中英

從numpy數組中查找和刪除某些元素的有效方法

[英]Effective way to find and delete certain elements from a numpy array

我有一個帶有一些正數和一些-1元素的numpy數組。 我想找到具有-1值的這些元素,刪除它們並存儲其指數。

一種實現方法是遍歷數組並檢查值是否為-1 這是唯一的方法嗎? 如果不是,那么其有效性如何? 難道沒有更有效的python工具嗎?

使用numpy.argwhere()numpy.delete()例程:

import numpy as np

arr = np.array([1, 2, 3, -1, 4, -1, 5, 10, -1, 14])
indices = np.argwhere(arr == -1).flatten()
new_arr = np.delete(arr, indices)

print(new_arr)            # [ 1  2  3  4  5 10 14]
print(indices.tolist())   # [3, 5, 8]

https://docs.scipy.org/doc/numpy-1.13.0/reference/produced/numpy.argwhere.html https://docs.scipy.org/doc/numpy/reference/produced/numpy.delete.html

import numpy as np
yourarray=np.array([4,5,6,7,-1,2,3,-1,9,-1]) #say
rangenumpyarray=np.arange(len(yourarray)) # to create a column adjacent to your array of range
arra=np.hstack((rangenumpyarray.reshape(-1,1),yourarray.reshape(-1,1))) # combining both arrays as two columns
arra[arra[:,1]==-1][:,0]  # learn boolean indexing

結合使用np.flatnonzero和簡單的布爾索引

x = array([ 0,  0, -1,  0,  0, -1,  0, -2,  0,  0])
m = x != -1  # generate a mask

idx = np.flatnonzero(~m)
x = x[m]
idx
array([2, 5])

x
array([ 0,  0,  0,  0,  0, -2,  0,  0])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM