我有一个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]
最快的替代方法是什么?
答案 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是不必要的。