AttributeError:“ numpy.ndarray”对象没有属性“ where”

时间:2019-12-03 11:40:55

标签: python-3.x numpy

我有一个像这样的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()属性,但是由于某种原因它不起作用,我猜我是怎么使用它的?

很明显,我可以通过将其转换为列表来解决它,但是我想知道如何在可能的情况下正确使用

1 个答案:

答案 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