【问题标题】:using numpy 'where' with an array subset使用带有数组子集的 numpy 'where'
【发布时间】:2017-08-16 14:56:53
【问题描述】:

我使用的是 python 2.7.13,我对使用 numpy 进行数组切片时看到的行为感到困惑。

import numpy as np
a=np.array([1,1,2,3,4,5,6,7])
print a
print a[1:]
print a[1:] > 3

print np.where( a[1:]  > 1 )

我期待看到最终输出 [2 3 4 5 6 7 8],即在切片中找到的数组索引。

我的目标是将布尔掩码应用于数组的所有元素除了第一个元素。然后在数组中获取与索引数组中第一个“真”值相对应的值。这可能吗?

【问题讨论】:

  • where 只是告诉你a[1:]>1True 的位置。它对 a 没有任何作用。

标签: python arrays numpy


【解决方案1】:

您的代码正在做您希望它做的事情。当你对 a[1:] 进行切片时,你会得到 np.array([1, 2, 3, 4, 5, 6, 7])。我得到的输出:

(array([1, 2, 3, 4, 5, 6], dtype=int64),)

在您指定的 a 切片中为您提供 2、3、4、5、6、7 的索引。

【讨论】:

    【解决方案2】:

    我想这可以解决你的问题:

    import numpy as np
    a=np.array([1,1,2,3,4,5,6,7])
    b=a[1:]
    print np.where( b  > 1 )
    

    在您的情况下,print 语句返回数组a 中的元素索引,同时跳过第一个元素。 获取数组aprint np.where(a>1) 中的索引 我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2019-06-20
      • 1970-01-01
      • 1970-01-01
      • 2013-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-18
      • 2012-03-18
      相关资源
      最近更新 更多