我有一个带有一些正数和一些-1
元素的numpy数组。我希望找到具有-1
值的这些元素,删除它们并存储它们的值。
这样做的一种方法是遍历数组并在值为-1
时进行检查。这是唯一的方法吗?如果没有,它的有效性如何呢?那么有没有更有效的python工具呢?
答案 0 :(得分:1)
使用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/generated/numpy.argwhere.html https://docs.scipy.org/doc/numpy/reference/generated/numpy.delete.html
答案 1 :(得分:0)
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
答案 2 :(得分:0)
使用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])