从数组中提取非“ -1”索引的最快方法是什么?

时间:2019-03-09 18:33:45

标签: python list numpy

我有一个numpy数组,尺寸为1500 x3300。我想获取所有值大于0.40的值的索引。

例如一个子数组:

a = [0,0.5,0.4,-1,-1,0.9,0.3,-1,0.7]

所需结果:     [0,1,5,8]

我已经编写了以下代码,但是运行需要很多时间。在尺寸为1500 x 3300的阵列上运行需要20分钟。

def non_zero(lst):
    """ return indexes of items which are not -1 and value is greater than 0.40 """
    return [i for i, e in enumerate(lst) if e > 0.40]

最快的替代方法是什么?

3 个答案:

答案 0 :(得分:0)

import numpy as np    
np.where(np.array(a) > 0.40)[0].tolist()

值> 0.40当然是> -1

我还假设“ a ”是数字列表(而不是列表列表)

答案 1 :(得分:0)

直接在2D数组中尝试以下操作:

i, j = np.where(np.array(lst) > 0.4)

答案 2 :(得分:0)

您可以使用@Controller public class RootLayoutController { private StackPane stackPane; @Autowired private PartsView partsView; @PostConstruct private void init(){ stackPane = new StackPane(); stackPane.getChildren().add(partsView); } public Pane getPane(){ return stackPane; } } 来获取索引。

np.argwhere

当然,a!= -1是不必要的。