我有一个像这样的NumPy数组:
[ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1
1 1 1 1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 -1
-1 -1 -1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 1 -1 1 1 1 1 1
1 1 1 1 1 1 1 -1 -1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1
-1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 -1 1
1 -1 -1 1 1 1 1 1 1]
我正在尝试访问np数组中等于-1的元素的索引。我发现NumPy具有与list.index等效的属性,但是我不断收到属性错误:“ numpy.ndarray”对象没有属性“ where”
我在这里Is there a NumPy function to return the first index of something in an array?看到了应该在哪里使用,但是当我尝试以下操作时,出现了以上错误:
for pred in outlier_preds:
if pred == -1:
index = where(predictions)
我也尝试过:
for pred in outlier_preds:
if pred == -1:
index = outlier_preds.where(pred == -1)
outlier_indecies.append(index)
并且:
for pred in outlier_preds:
if pred == -1:
index = outlier_preds.where(preds)
显然有一个where()属性,但是由于某种原因它不起作用,我猜我是怎么使用它的?
很明显,我可以通过将其转换为列表来解决它,但是我想知道如何在可能的情况下正确使用
答案 0 :(得分:1)
从numpy.where的文档开始-函数返回索引,其中函数内的条件为True。
示例:
>>> np.where(outlier_preds == -1)
(array([ 35, 59, 117, 118, 119, 126, 128, 141, 143, 144, 145, 146, 149,
150, 151, 152, 153, 155, 156, 162, 175, 176, 184, 192, 201, 202,
203, 204, 205, 214, 217, 218], dtype=int64),)
>>> np.where(outlier_preds == -1)[0][0] #First element only
35